前言
必须先知道,cube配置lwip是个极其简单的事情,想复杂往往就真复杂了。 这里我的环境是(看着多,其实就是几个勾)
- cubeV6.3
- LWIPv2.1.2`
- 默认开启DHCP,只插网线就好,本地ip和子网掩码这些不需要配置
- stm32f407ZGTx
- FreeRTOSv10.3.1
- CMSIS-RTOSv1.0.2
ETH外设配置
- PHY配置[必须正确]
- PHY地址配置[必须正确]
- MAC配置[可选]
- GPIO配置[必须正确,检查RMII接口引脚是否和自己的一样,不一样要改过来]
直接选8742A这个,真方便啊。。。 RMII接口引脚会自动生成,但未必和我们实际使用的电路图引脚相同,不对的要改过来。另外一个复位引脚根据自己的IO配置成普通输出就好
*PHY复位代码添加
位置:main()->MX_FREERTOS_Init()->osThreadDef():创建的缺省任务StartDefaultTask()->MX_LWIP_Init()->netif_add()的形参函数: ethernetif_init(),这里也可以配置HOSTNAME->low_level_init()这里可以看到上面的MAC配置->HAL_ETH_Init()->HAL_ETH_MspInit()重于找到了 ,不想一层层往下找直接搜索HAL_ETH_MspInit 就好了 然后添加三行代码,把复位引脚拉低50ms再置高就完成了 (注: 代码块放置在用户代码区,这样下次cube生成后我们添加的代码还在)
LWIP配置
甚至不需要别的配置了。。 这时候插上网线应该就能在路由器的客户端里面看到连接了,只是主机名是个* 号, 也可以看到开发板IP,主机ping 开发板IP也可以ping 通
HOSTNAME配置
这样默认会生成一个"lwip"的主机名,连接路由器可以看到 如果需要修改, 位置:main()->MX_FREERTOS_Init()->osThreadDef():创建的缺省任务StartDefaultTask()->MX_LWIP_Init()->netif_add()的形参函数: ethernetif_init() 改成需要的就好了
其他一些默认配置情况
-
RAW API 默认未开启 -
NETCONN API 默认已开启 -
Socket API 默认已开启
另外注意:
- 测试收发时特别注意自己电脑的防火墙,可以先用局域网内其他电脑
ping 自己的电脑看看,ping 不通先关闭自己的防火墙,电脑之间相互ping 的通再测试开发板(我就是那个没关防火墙调试的人才。。)
|