对于使用电池供电的电子设备,因电池容量较小,因此很有必要控制功耗,延长设备的使用时间。
必须开启 PWR 时钟,否则电源模式、电压调节器、RTC等关键功能不能使用。
标准库、HAL库中会默认开启的吗???
单片机耗电量
查看数据手册。
电源系统结构

电压调节器:
在正常模式下,将3.3V降压至1.8V,供内核、外设等使用。
在停止模式下,可进入低功耗模式,进一步降低静态功耗。(某些型号在低功耗稳下仅保留部分RAM??)
当主电源掉电时,切换到备用电池供电。
可编程电压监测器 PVD
监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD阀值之上时,PVD会触发中断,用于执行紧急关闭任务。
低功耗模式
STM32 有三种低功耗模式:
芯片在低功耗模式下,是不能下载程序的,要按住复位键下载。
WFI(Wait For Interrupt):
等待中断,无论该中断是否被使能或挂起。
唤醒后,先执行中断服务程序,再进入主程序。
WFE(Wait For Event):
等待事件,由事件或中断触发,它看的是标志位。
事件唤醒,直接执行主程序;中断唤醒,和WFI一样。
应用场景:低功耗唤醒、多核同步、RTOS任务同步
注意,立即睡眠和等待

相关函数
启用或禁用唤醒引脚功能
void PWR_WakeUpPinCmd(FunctionalState NewState)启用或禁用访问RTC和备份寄存器的功能
void PWR_BackupAccessCmd(FunctionalState NewState)NewState:
ENABLE
DISABLE
将PWR外设寄存器恢复为默认复位值
void PWR_DeInit(void)进入 STANDBY 模式:
void PWR_EnterSTANDBYMode(void)进入 STOP 模式:
void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry)PWR_Regulator:
PWR_MAINREGULATOR_ON:主调压器
PWR_LOWPOWERREGULATOR_ON:低功耗调压器
PWR_STOPEntry:
PWR_STOPENTRY_WFI:使用 WFI
PWR_STOPENTRY_WFE:使用 WFE
清除 PWR 的指定挂起标志:
void PWR_ClearFlag(uint32_t PWR_FLAG)检查指定的PWR标志是否已设置:
FlagStatus PWR_GetFlagStatus(uint32_t PWR_FLAG)启用或禁用电压监测器(PVD):
void PWR_PVDCmd(FunctionalState NewState)配置PVD的电压阈值:
void PWR_PVDLevelConfig(uint32_t PWR_PVDLevel)判断唤醒源
STOP 模式下的唤醒:
Standby 模式下的唤醒:
唤醒后判断唤醒源:
复位后判断唤醒源: