你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F429 LWIP初始化失败

[复制链接]
jyl_518 提问时间:2020-4-24 09:17 /
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”,可工程里已经是勾选状态的哇!!!

  1. int main(void)
  2. {
  3.   HAL_Init();
  4.   SystemClock_Config();
  5.   MX_GPIO_Init();
  6.   MX_LWIP_Init();    //若注释掉则LED正常闪烁;不注释掉则卡死,LED都不亮。
  7.   while (1)
  8.   {
  9.       HAL_GPIO_TogglePin(LED_RUN_GPIO_Port, LED_RUN_Pin);
  10.       HAL_Delay(500);
  11.   }
  12. }
复制代码
STM32CubeMX生成的ETH初始化代码如下:
  1. void MX_LWIP_Init(void)
  2. {
  3.   lwip_init();
  4.   ipaddr.addr = 0;
  5.   netmask.addr = 0;
  6.   gw.addr = 0;
  7.   netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &ethernet_input);
  8.   netif_set_default(&gnetif);

  9.   if (netif_is_link_up(&gnetif))
  10.   {
  11.     netif_set_up(&gnetif);
  12.   }
  13.   else
  14.   {
  15.     netif_set_down(&gnetif);
  16.   }
  17.   dhcp_start(&gnetif);
  18. }
复制代码
时钟配置图如下: CLK.png









fz.png
无标题.jpg
收藏 评论2 发布时间:2020-4-24 09:17

举报

2个回答
李康1202 回答时间:2020-4-24 09:48:59
顶一顶
jyl_518 回答时间:2020-4-24 15:43:13
自己顶下,解决了,
就是printf重定向问题。百度上勾选微库不管用的(因为STM32CubeMX生成的代码已经勾选了)
加了如下代码解决:
  1. int fputc(int ch, FILE *f)
  2.         {
  3. //        USART_SendData(USART1, (uint8_t) ch);
  4. //        while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
  5. //        {}
  6.         return ch;
  7. }
复制代码


关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版