/* Check whether the link interrupt has occurred or not */
if((regvalue & PHY_LINK_INTERRUPT) != (uint16_t)RESET)
{
/* Read PHY_SR*/
HAL_ETH_ReadPHYRegister(&EthHandle, PHY_SR, ®value);
/* Check whether the link is up or down*/
if((regvalue & PHY_LINK_STATUS)!= (uint16_t)RESET)
{
netif_set_link_up(link_arg->netif);
}
else
{
netif_set_link_down(link_arg->netif);
}
}
}
}
}
这几句应该是当网线插拔时进行网络状态设置的,但我把他们取出,并定时进行查询时,感觉没有执行,每次读出的都是0x00000,且容易出现hardfault /* Read PHY_SR*/ HAL_ETH_ReadPHYRegister(&EthHandle, PHY_SR, ®value); /* Check whether the link is up or down*/ if((regvalue & PHY_LINK_STATUS)!= (uint16_t)RESET) { netif_set_link_up(link_arg->netif); } else { netif_set_link_down(link_arg->netif); }
现在是程序进行TCPIP网络通信是没问题的。
请各位达人,给说一下如何检测网线的热插拔,检测到网线拔掉时一般要做什么操作,插上时又要做什么操作,谢谢