MCU:STM32F107
PHY:KSZ8081
LWIP_VERSION:2.0.3
1.配置RCC,串口,定时器
1.1 开启RCC,使用内部8M晶振,配置系统时钟
文章图片
文章图片
1.2 打开调试串口1,打开接收中断,开启DMA发送
文章图片
文章图片
文章图片
1.3 打开定时器中断
文章图片
2.ETH配置参数
文章图片
PHY地址怎么确定?看PHY硬件手册和硬件原理图
文章图片
文章图片
文章图片
文章图片
2.1 PHY前16个寄存器是通用的标准的,不需要修改。修改下PHY控制状态寄存器的偏移,以及哪个BIT位代表速度哪个BIT位代表全双工、半双工。我们可以看下PHY的丛植状态寄存器
文章图片
文章图片
2.2开启连接和状态回调函数,这样可以实现网线插上和拔下的时候触发事件,能够拔下网线的时候缓存数据,插上网线的时候重新申请IP地址并连接服务器。
在ethernetif.c文件里面
void ethernetif_notify_conn_changed(struct netif *netif)
{
/* NOTE : This is function could be implemented in user file
when the callback is needed,
*/
DebugUARTPrintf("conn_changed");
if(netif_is_link_up(netif) && !netif_is_up(netif))
{
netif_set_up(netif);
extern err_t dhcp_start(struct netif *netif);
dhcp_start(netif);
}
}
需要把ethernetif_set_link(netif_default)放到void MX_LWIP_Process(void),并把void MX_LWIP_Process(void)放到主函数里面轮循。
【基于STM32F107裸机移植LWIP(STM32CUBE配置)】基本上到这里就可以PING通了。可以再加上业务层,可以到ST的官方上下载,官方网站上有关于做TCP/UDP客户端以及服务器等等。
推荐阅读
- stm32|基于STM32和freeRTOS智能门锁设计方案
- 日常分享|共享充电宝方案原理,具体部件组成以及主控MUC参数
- #|ARM裸机开发(汇编LED灯实验(I.MX6UL芯片))
- STM32|STM32的四种IO输出模式
- STM32 远程升级(ISP / IAP)
- stm32|stm32f103can总线过滤器配置
- STM32CubeMX配置SDIO模式(非DMA方式)
- STM32|如何建一个STM32F030标准库工程模板
- STM32 时钟RCC相关配置参考stm32f10x_rcc.h
- STM32 NVIC