STM32F429通過CubeMx移植Lwip時遇到的網線熱插拔ping不通問題解決辦法
之前在stm32F107上移植過Lwip,最后可以ping通了,但是發現兩個問題:
1.ping通后拔掉網線再插上就ping不通了(這個問題在拔線前自動協商的通信模式變化后會出現),
2.板子啟動的時候不插網線,板子啟動后再插入網線后再也無法ping通,
閑話少敘,上程序:

我的phy芯片是DP83848





生成mkd工程

問題1的原因,下圖中紅圈內的函式沒有添加,該函式負責檢測phy是否斷開或重新連接,并在網線插入后重新啟動自動協商,將協商結果重新設定到mac中去,以達到熱插拔的效果

原來自動生成的判斷函式邏輯有我問題,需要修改下,

問題2原因:下圖紅色標記的函式在cubemx自動生成的工程里沒有,是我自己添加的,個人感覺相當于linux中的ifconfig eth1 up/down命令,加上后拔網線再啟動板子后就可ping通了,

下圖中執行cube中使能的回呼函式,進行mac的重新初始化


回呼函式指向了下圖函式,有興趣的可以看看這個函式干了啥

完成以上修改后,裸機輪詢模式的lwip可實作熱插拔及拔網線啟動,
補充:剛用cubemx 生成了freertos 和 lwip工程,同樣的問題,同樣的改動點,解決熱插拔問題,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/256869.html
標籤:其他
上一篇:ESP32開發 0.windows Vscode開發環境搭建,基于esp-idf-V4.2 | Cmake | Vscode插件
