diff options
| author | SummerGift <[email protected]> | 2019-06-10 10:05:11 +0800 |
|---|---|---|
| committer | SummerGift <[email protected]> | 2019-06-10 15:07:45 +0800 |
| commit | 8710b1fd06898920c3a61baaa69efd0737afd5d8 (patch) | |
| tree | eb42e7418d8a94079bf9800d2db85b06b35b4512 | |
| parent | cf7052f6b7502c20f28eae5b9c096978c7f3a98f (diff) | |
【修复】PHY 状态查询过程中的 bug
| -rw-r--r-- | bsp/stm32/libraries/HAL_Drivers/drv_eth.c | 46 |
1 files changed, 27 insertions, 19 deletions
diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_eth.c b/bsp/stm32/libraries/HAL_Drivers/drv_eth.c index 148a03f45b..b9b584ade9 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_eth.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_eth.c @@ -468,32 +468,40 @@ static void phy_monitor_thread_entry(void *parameter) while (1) { - HAL_ETH_ReadPHYRegister(&EthHandle, PHY_BASIC_STATUS_REG, (uint32_t *)&status); - LOG_D("PHY BASIC STATUS REG:0x%04X", status); - phy_speed_new = 0; - if (status & (PHY_AUTONEGO_COMPLETE_MASK | PHY_LINKED_STATUS_MASK)) + if(HAL_ETH_ReadPHYRegister(&EthHandle, PHY_BASIC_STATUS_REG, (uint32_t *)&status) == HAL_OK) { - rt_uint32_t SR; + LOG_D("PHY BASIC STATUS REG:0x%04X", status); + + if (status & (PHY_AUTONEGO_COMPLETE_MASK | PHY_LINKED_STATUS_MASK)) + { + rt_uint32_t SR; - phy_speed_new = PHY_LINK_MASK; + phy_speed_new = PHY_LINK_MASK; - SR = HAL_ETH_ReadPHYRegister(&EthHandle, PHY_Status_REG, (uint32_t *)&SR); - LOG_D("PHY Control/Status REG:0x%04X ", SR); + if(HAL_ETH_ReadPHYRegister(&EthHandle, PHY_Status_REG, (uint32_t *)&SR) == HAL_OK) + { + LOG_D("PHY Control/Status REG:0x%04X ", SR); - if (SR & PHY_100M_MASK) - { - phy_speed_new |= PHY_100M_MASK; - } - else if (SR & PHY_10M_MASK) - { - phy_speed_new |= PHY_10M_MASK; - } + if (SR & PHY_100M_MASK) + { + phy_speed_new |= PHY_100M_MASK; + } + else if (SR & PHY_10M_MASK) + { + phy_speed_new |= PHY_10M_MASK; + } - if (SR & PHY_FULL_DUPLEX_MASK) - { - phy_speed_new |= PHY_FULL_DUPLEX_MASK; + if (SR & PHY_FULL_DUPLEX_MASK) + { + phy_speed_new |= PHY_FULL_DUPLEX_MASK; + } + } + else + { + LOG_D("PHY Control/Status REG read error."); + } } } |
