void sys_api_power_shutdown(void)
{
HAL_SuspendTick();
__disable_irq();
/* Enable WakeUp Pin PWR_WAKEUP_PIN2 connected to PC.13 */
HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN2_HIGH_1);
/* Clear wake up flag */
__HAL_PWR_CLEAR_FLAG(PWR_WAKEUP_ALL_FLAG);
/* delay */
sys_api_nop(10);
/* Enter the shut down mode */
HAL_PWREx_EnterSHUTDOWNMode();
}
请问,通过上述代码进入shutdown模式,偶尔会出现进入失败的情况,现象是功耗没有降下去,并且IO口没有被重置,我在进入之前进行了systick关闭和全部中断的禁用,我确认PWR->BDCR1中的PWR_BDCR1_BREN位是0,并且清除了全部的唤醒标志,还给了一定的延时。 |