CPU:STM32F429ZGT6
开发环境:STM32CubeMX,KEIL V5.29.0.0最近开发,发现初始化网口就卡死,仿真也卡死。
STM32CubeMX验证用配置:
1、使能ETH的RMII(默认值),使能中间件LWIP(默认值)
2、配置PC9为输出,用来控制LED。
3、Main主函数内循环控制LED亮灭。
4、若注释掉MX_GPIO_Init(); ,则LED正常闪烁;不注释掉则卡死,LED都不亮。 注:现在PHY还没接,就算初始化不成功,也不应该卡死的。管管及各位大侠能指导下吗,项目就差这个接口了。
最新情况:仿真情况下 F10执行代码,能够避免卡死,程序能顺利执行到LED代码,管管这个是Bug吗?!!百度说这个问题要勾选“MDK选择设置,TARGET ,勾选Use MicroLIB”,可工程里已经是勾选状态的哇!!!
- int main(void)
- {
- HAL_Init();
- SystemClock_Config();
- MX_GPIO_Init();
- MX_LWIP_Init(); //若注释掉则LED正常闪烁;不注释掉则卡死,LED都不亮。
- while (1)
- {
- HAL_GPIO_TogglePin(LED_RUN_GPIO_Port, LED_RUN_Pin);
- HAL_Delay(500);
- }
- }
复制代码 STM32CubeMX生成的ETH初始化代码如下:- void MX_LWIP_Init(void)
- {
- lwip_init();
- ipaddr.addr = 0;
- netmask.addr = 0;
- gw.addr = 0;
- netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, ðernet_input);
- netif_set_default(&gnetif);
- if (netif_is_link_up(&gnetif))
- {
- netif_set_up(&gnetif);
- }
- else
- {
- netif_set_down(&gnetif);
- }
- dhcp_start(&gnetif);
- }
复制代码 时钟配置图如下:
|
就是printf重定向问题。百度上勾选微库不管用的(因为STM32CubeMX生成的代码已经勾选了)
加了如下代码解决: