STM32的低功耗模式有3种:
1、睡眠模式(CM3内核停止,外设仍然运行)
2、停机模式(所有时钟都停止)
3、待机模式(1.8v内核电源关闭)
进入待机模式的方法,以及设置WK_UP引脚用于把STM32从待机模式唤醒的方法
一般步骤如下:
1、设置SLEEPDEEP位
SCB_SCR的第二位
2、使能电源时钟,设置WK_UP引脚作为唤醒源
因为要配置电源控制寄存器,所以必须先使能电源时钟。然后再设置PWR_CSR的EWUP位,使能WK_UP用于将CPU从待机模式唤醒。
3、设置 PDDS PDDS位,执行 WFI 指令,进入待机模式。
通过 PWR_CR 设置 PDDS 位,使得 CPU 进入深度睡眠时待机模式,最后执行 WFI指令开始进入待机模式,并等WK_UP中断的到来
4、最后编写WK_UP中断函数
下面是进入待机模式的代码
//进入待机模式
void STAND_By(void){
SCB->SCR |= 1<<2; //设置SLEEPDEEP位
RCC->APB1ENR |= 1<<28;//使能电源时钟
PWR->CSR |= 1<<8; //设置WK_UP作为唤醒源
PWR->CR |= 1<<1; //设置PDDS位,进入深睡眠模式
PWR->CR |= 1<<2; //清除唤醒位
__ASM