一、PWR简介
PWR负责stm32内部的电源供电,可以检测电压和执行低功耗模式。
低功耗模式:睡眠模式、停机模式、待机模式(standby),可以降低单片机功耗。需要考虑关闭那些硬件,关闭越多越省电。
二、stm32电源框图

Vdda负责模拟电路供电,Vbat负责后备供电,Vdd负责数字部分供电。
三、三种低功耗模式的工作简介

降低功耗的方式:1.关闭时钟,程序暂停,数据在寄存器中保存不丢失2.关闭电源,数据丢失。
(一)睡眠
WFI进入后,可以由任一个中断唤醒,唤醒后从中断开始执行;WFE进入后,可以由唤醒事件唤醒,唤醒后从睡眠的地方继续执行。
(二)停机
停机模式进入选择的WFI还是WFE和唤醒选取的外部中断有关。
(三)待机
只有少量指定的唤醒条件。
(四)寄存器与电路功能的对应

其他寄存器的配置必须在WFI、WFE之前。
需要再中断函数中实现睡眠功能,需要考虑配置:sp=0,st=1。
(五)整体介绍
1.睡眠模式:执行WFI或者WFE后,STM32进入睡眠模式,程序暂停,唤醒后从暂停的地方运行。SLEEPONEXIT决定是立即睡眠还是处理完中断后再睡眠。唤醒方式:

2.停止模式:执行WFI或者WFE后,STM32进入睡眠模式,程序暂停,唤醒后从暂停的地方运行。SRAM和寄存器供电被保留来储存数据,其他供电禁止。中断唤醒WFI,事件唤醒WFE。
此时IO引脚保持暂停前的运行状态。
唤醒后默认使用HSI(内部高速时钟),需要软件重新设置主频。
如果停止模式开启电压调节器(低功耗模式),唤醒时有一段启动延时。
3.待机模式:执行WFI或者WFE后,STM32进入睡眠模式,程序暂停,唤醒后从头开始运行。只有备份寄存器和待机电路维持供电。
此时IO引脚保持高阻态(浮空输入)。{输出既不高电平也不低电平叫高阻态,输入既不上拉也不下拉称为浮空,二者的配置是相同的。}
四、WPR的使用
对于STM32标准库,并没有集成设置SEVEONPEND、SLEEPDEEP、SLEEPONEXIT的函数,只能通过直接配置寄存器来实现。如果不进行配置,那么这几位就是默认的0。