关于STM32L151使用HAL库,进入standby模式与唤醒中的坑

背景:最近在用stm32L151做一个低功耗项目,经过一系列操作,终于将standby下功耗控制到了5.5uA。但是有个问题,使用WKup引脚唤醒之后,无法再次进入standby模式,而是直接复位。

再次经过一系列操作找到了关键点,如下:

1.

这两个位硬件自动设置,当第一次进入standby模式,并唤醒后,这SBF和WUF被置位,但是hal库的HAL_PWR_EnterSTANDBYMode();  函数并没有对这两位清零,所以导致后续进入standby模式后。立刻退出。

增加清除操作即可。代码如下。

void EnterSTANDBYMode(void)
{
    PWR->CR|=1<<2;           //清除Wake-up 标志
    PWR->CR|=1<<3;           //清除待机 标志
    
    HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);
    __HAL_RCC_PWR_CLK_ENABLE();
    HAL_PWR_EnterSTANDBYMode();
}

还有问题就是,不知道什么原因,下载完程序要重新上电才可以到达最低功耗。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章