定时任务中,查询LAN8720的状态寄存器 PHY_BSR = 0x01,成功读取后,检查16位数据的BIT2,即可获取网线连接状态
uint32_t phyreg = 0;if(HAL_ETH_ReadPHYRegister(&g_eth_handler, PHY_BSR, &phyreg) == HAL_OK){if(((phyreg >> 2) & 0x1) != 0x1) // 下线{IsNetLinkDown = true;}else if(IsNetLinkDown){IsNetLinkDown = false;/* 关闭连接 */lwip_tcp_client_connection_close(tcppcb, 0); /* 创建一个新的pcb */ tcppcb = tcp_new(); /* 创建成功 */if (tcppcb) {/* 连接到目的地址的指定端口上,当连接成功后回调lwip_tcp_client_connected()函数 */tcp_connect(tcppcb, &rmtipaddr, LWIP_DEMO_PORT, lwip_tcp_client_connected); }delay_ms(1000);}}