关于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();
}
还有问题就是,不知道什么原因,下载完程序要重新上电才可以到达最低功耗。