stm32利用lwip实现以太 热插拔

在使用lwip时,关于以太 热插拔问题可以归类为一下几种问题:
(1):单片机启动前未插 线,启动后死活连不上。
(2):在使用过程中拔掉 线后,不复位或者重启的话,ping不通并且调试软件连不上。

原因:由于未检测到 络,导致自动协商、连接状态等超时后,执行语句return ETH_ERROR;从而导致程序后半部分的初始化程序未执行,例如MAC的配置语句未执行。
简而言之就是初始化未完成。

有一个简单粗暴,比较快的,一劳永逸的办法(虽然感觉不是特别好,但是真的很粗暴很快乐!):
将stm324x7_eth.c文件的ETH_Init()函数中的return ETH_ERROR;给屏蔽掉。
例如

将return ETH_ERROR()屏蔽即可,屏蔽掉并不会影响程序的执行和初始化。

同时也不要把main()函数中的lwip_comm_init(和tcp_server_init()放在while 中,会导致因为有返回值一直初始化。

stm32利用lwip实现以太 热插拔
因为修改的是底层文件,所以无论有无操作系统,都是比较方便的方法,虽然不是特别好的方法。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月23日
下一篇 2021年3月23日

相关推荐