最近在调试项目过程中,需要用到网络功能。结果出现配置好后网络ping不通的情况,最终找到解决问题的方法。
中间搜索了网上的解决方法,有加大堆栈的方式,没有效果,各种折腾,这个坑差点把自己埋了!!最后分析实验找到问题根源。
环境:
1, STM32CUBEIDE V1.4.2
2,STM32cube MCU Package for STM32F4 Series 1.25.0
现象及过程:
1,系统和其他配置,不用多讲
2,裸机程序不加操作系统,配置好ETH,注意与datasheet和原理图核对正确。
注意PHY Address,看看原理图上,究竟该1还是0自己确定
这个看lan芯片的数据手册,Lan8720a是这个配置。
3,生成代码编译下载后,在main函数循环中加入:MX_LWIP_Process();
4,运行后可以ping通。
5,然后配置加入FreeRTOS,
6,运行后,分步调试,会卡在configASSERT( ucCurrentPriority >= ucMaxSysCallPriority )处,造成ping不通。
7,关键的一步,将ETH的中断优先级设置到到大于等于5,我设置成6。
这是FreeRTOS的系统优先级,必须比这个低。
8,重新生成代码,编译,下载,运行。OK,可以屏通网络了。
https://blog.csdn.net/terastudio/article/details/106085132参考学习了terastudio的文章,收益颇丰,表示感谢。
如果这篇文章能够给你提供到帮助,可以在用支付宝支付的时候,先搜索585852652领个支付宝给你发的红包。