stm32 以太网启动后再插网线的问题

STM32加lwip, 在启动时没插网线,启动后再插网线,会发现网络功能无法使用,是因为启动过程中初始化网络失败。

这种情况,需要在CubeMX的lwip配置中,允许LWIP_NETIF_LINK_CALLBACK

在主循环中加入函数 

ethernetif_set_link(netif_default);

检查网线是否连接。

然后自己增加回调函数,

void ethernetif_notify_conn_changed(struct netif *netif)
{
  /* NOTE : This is function could be implemented in user file 
            when the callback is needed,
  */
    if(netif_is_link_up(netif))
    {
        printf("net link is up\r\n");
        netif_set_up(netif_default);
    }
    else{
        printf("net link is down\r\n");
    }

}

关键是需要启动网络接口。

 

你可能感兴趣的:(stm32 以太网启动后再插网线的问题)