jyl518-283289 发表于 2020-4-24 09:17:55

STM32F429 LWIP初始化失败

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, &ethernetif_init, &ethernet_input);
netif_set_default(&gnetif);

if (netif_is_link_up(&gnetif))
{
    netif_set_up(&gnetif);
}
else
{
    netif_set_down(&gnetif);
}
dhcp_start(&gnetif);
}时钟配置图如下:









likang1202 发表于 2020-4-24 09:48:59

顶一顶

jyl518-283289 发表于 2020-4-24 15:43:13

自己顶下,解决了,
就是printf重定向问题。百度上勾选微库不管用的(因为STM32CubeMX生成的代码已经勾选了)
加了如下代码解决:
int fputc(int ch, FILE *f)
        {
//        USART_SendData(USART1, (uint8_t) ch);
//        while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
//        {}
        return ch;
}

页: [1]
查看完整版本: STM32F429 LWIP初始化失败