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

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

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

1.关于STM32L151使用HAL库,进入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();
}

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

 

你可能感兴趣的:(stm32开发,硬件开发。,低功耗,stm32L,HAL库,stm32,低功耗,stm32,STANDBY模式)