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");
}
}
关键是需要启动网络接口。