stm32f429以太网唤醒不了。正常运行时收到magic packet能进ETH_WKUP_IRQHandler,MCU进STOP模式后唤醒不了MCU。 进STOP前调用eth_enter_sleep(),退出stop后调用eth_exit_sleep()。 void eth_enter_sleep(void) { HAL_ETH_Stop(&EthHandle); /* Write to ETHERNET MACCR */ EthHandle.Instance->MACRWUFFR = 0; EthHandle.Instance->MACRWUFFR = 0; EthHandle.Instance->MACRWUFFR = 0; EthHandle.Instance->MACRWUFFR = 0; EthHandle.Instance->MACRWUFFR = 0; EthHandle.Instance->MACRWUFFR = 0; EthHandle.Instance->MACRWUFFR = 0; EthHandle.Instance->MACRWUFFR = 0; __HAL_ETH_WAKEUP_EXTI_ENABLE_FALLINGRISING_TRIGGER(); __HAL_ETH_WAKEUP_EXTI_ENABLE_IT(); __HAL_ETH_WAKEUP_FRAME_DETECTION_ENABLE(&EthHandle); __HAL_ETH_MAGIC_PACKET_DETECTION_ENABLE(&EthHandle); __HAL_ETH_POWER_DOWN_ENABLE(&EthHandle); { __IO uint32_t tmpreg1 = 0U; /* Enable the MAC reception */ (EthHandle.Instance)->MACCR |= ETH_MACCR_RE; /* Wait until the write operation will be taken into account: at least four TX_CLK/RX_CLK clock cycles */ tmpreg1 = (EthHandle.Instance)->MACCR; rt_thread_mdelay(1); (EthHandle.Instance)->MACCR = tmpreg1; } } void eth_exit_sleep(void) { __HAL_ETH_POWER_DOWN_DISABLE(&EthHandle); __HAL_ETH_GET_PMT_FLAG_STATUS(&EthHandle, ETH_PMT_FLAG_WUFFRPR); __HAL_ETH_GET_PMT_FLAG_STATUS(&EthHandle, ETH_PMT_FLAG_WUFR); __HAL_ETH_GET_PMT_FLAG_STATUS(&EthHandle, ETH_PMT_FLAG_MPR); HAL_ETH_Start(&EthHandle); } |
目前还没有搞过哟 |
目前只找到这些相关的内容,按照手册的这个步骤配置或调试一下试试 |