在线时间1 小时
UID76106
ST金币6
蝴蝶豆0
注册时间2008-9-18
该用户从未签到
新手上路
- 最后登录
- 2019-2-28
|
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);
}
|
|