最近项目用到低功耗,但是调试发现进入待机就被唤醒的问题,清除WU、SB两个唤醒标志位,也依然被立马唤醒一次。
/* 进入待机模式 */
HAL_PWR_EnterSTANDBYMode();
通过极海的数据手册终于发现,我们在使能WAKE-UP PA.0唤醒脚造成的,所以问题找到了,使能PA.0后清除一次WU标志就能解决。
/* 使能WKUP引脚的唤醒功能 ,使能PA0*/
HAL_PWR_EnableWakeUpPin( PWR_WAKEUP_PIN1);
//***->使能WKUP引脚的唤醒功能后,必须清除 唤醒事件产生标志,极海数据手册100页
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
//暂停滴答时钟,防止通过滴答时钟中断唤醒
HAL_SuspendTick();
/* 进入待机模式 */
HAL_PWR_EnterSTANDBYMode();