一、简介
•PWR(Power Control)电源控制
•PWR负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能
•可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD阀值之上时,PVD会触发中断,用于执行紧急关闭任务
•低功耗模式包括睡眠模式(Sleep)、停机模式(Stop)和待机模式(Standby),可在系统空闲时,降低STM32的功耗,延长设备使用时间
二、电源框图
| 供电区域 | 核心供电 | 包含模块 | 功能说明 |
|---|---|---|---|
| V DDA 模拟供电区 | V DDA/V SSA | ADC、温度传感器、复位模块、PLL | 为模拟电路提供纯净电源,必须与 V DD / V SS 分别连接,参考电压 V REF+ / V REF- 也由此区域供电 |
| V DD 数字供电区 | V DD / V SS | I/O 电路、待机电路、电压调节器 | 负责数字外设和 I/O,电压调节器将 V DD 降压为 1.8V,供给核心域 |
| 1.8V 核心供电区 | 1.8V(由电压调节器提供) | CPU 核心、存储器、内置数字外设 | 芯片的运算与存储核心,仅在运行模式下工作,低功耗模式下可断电 |
| 后备供电区 | V BAT (或 V DD ) | LSE 晶振、后备寄存器、RTC、RCC BCDCR | 由 VBAT 或主电源供电,在主电源掉电时仍可保持 RTC 计时和后备数据 |

- 电源连接:V DDA 必须与 V DD 同电位,V SSA 必须与 V SS 同电位,通常通过单点共地连接。
- 低功耗模式:可关闭 1.8V 核心域和 V DD 域,仅保留后备域供电,实现极低功耗待机。
- 模拟性能:为保证 ADC 精度,V DDA 需使用独立滤波电路,避免数字电源纹波干扰。
三、上电复位和掉电复位
芯片电压规则
- 上电启动 :电压必须 ≥ POR 阈值,才能完成启动、退出复位
- 正常运行 :电压只要 ≥ PDR 阈值,就不会复位
- 最高耐压 :绝对不能超过芯片的 绝对最大电压,否则烧毁
关键概念解析
- POR(Power On Reset,上电复位) :芯片刚上电时,电源电压 VDD/VDDA 从 0 开始上升。当电压上升到 POR 阈值时,芯片会触发复位,确保内部电路在稳定电压下初始化。
- PDR(Power Down Reset,掉电复位) :芯片正常工作后,若电源电压下降到 PDR 阈值,会再次触发复位,防止电压过低导致逻辑紊乱或数据损坏。
- 40mV 迟滞(Hysteresis) :POR 阈值比 PDR 阈值高 40mV,这是为了避免电源电压在阈值附近波动时,复位信号频繁跳变(防抖动),保证系统稳定。
- 滞后时间 tRSTTEMPO:电压达到 POR 阈值后,复位信号不会立即变化,而是延迟 tRSTTEMPO 时间再释放复位,让电源和内部电路完全稳定后再启动芯片。

四、PVD可编程电压检测器
一、核心定义
PVD = 电源电压检测器 ,是芯片的电源预警机制,用于监控 VDD/V<sub>DDA</sub>电压,提前响应电源异常。核心区别:PVD 不直接复位芯片,先触发中断给系统预留处理时间;而 PDR 是掉电强制复位机制。
二、硬件固定电平逻辑(对应波形图)
表格
| 电压状态 | PVD 输出 | 状态含义 |
|---|---|---|
| VDD > 上升阈值 | 低电平 | ✅ 电源正常,无告警 |
| VDD < 下降阈值 | 高电平 | ⚠️ 电源异常,触发告警 |
| 两阈值之间(100mV 迟滞区间) | 保持原电平 | 🛡️ 抗抖动,不触发状态翻转 |
三、可配置项 vs 不可配置项
表格
| 不可修改(硬件固定) | 可自定义(软件配置) |
|---|---|
| 100mV 迟滞电压 | PVD 电压阈值(多档位可选) |
| 硬件原生输出电平逻辑 | 中断触发方式(上升沿 / 下降沿 / 双边沿) |
| 软件告警逻辑(高 / 低有效可自定义) |
四、核心特性
- 100mV迟滞设计:避免电压纹波、小幅波动误触发告警,提升抗干扰能力
- 中断优先级可配置,能快速响应掉电风险,优先执行保护动作
五、典型应用场景
- 掉电前紧急保存关键数据
- 触发低功耗模式,保护系统运行状态
- 电源异常声光 / 通讯告警
- 配合后备域 RTC 实现掉电计时保护
六、与 POR/PDR 核心区别
POR:上电复位门槛,管「芯片能不能正常启动」
PDR:掉电复位门槛,管「运行中会不会强制停机」
PVD:掉电预警门槛,管「异常前能不能提前做保护处理」

五、低功耗模式

1. 三种模式核心对比
| 模式 | 进入方式 | 唤醒方式 | 1.8V 区域时钟 | VDD 区域时钟 | 电压调节器状态 |
|---|---|---|---|---|---|
| 睡眠 | WFI / WFE | 任一中断 / 唤醒事件 | 仅 CPU 时钟关闭,其他时钟 / ADC 时钟不受影响 | 无影响 | 开启 |
| 停机 | PDDS+LPDS+SLEEPDEEP 位 + WFI/WFE | 任一外部中断(需在外部中断寄存器配置) | 全部关闭 | HSI/HSE 振荡器关闭 | 开启 / 低功耗模式(由 PWR_CR 寄存器配置) |
| 待机 | PDDS+SLEEPDEEP 位 + WFI/WFE | WKUP 引脚上升沿、RTC 闹钟、NRST 复位、IWDG 复位 | 全部关闭 | HSI/HSE 振荡器关闭 | 关闭 |
2. 关键特性解读
- 睡眠模式:最轻量级低功耗,仅暂停 CPU,外设和时钟保持运行,唤醒延迟极短,适合短暂休眠场景。
- 停机模式:中等功耗,关闭核心时钟和主振荡器,保留寄存器和 RAM 数据,唤醒后可快速恢复运行状态。
- 待机模式:最低功耗,彻底关闭电压调节器,仅保留后备域(RTC / 后备寄存器)供电,唤醒后相当于复位,所有寄存器状态丢失。
3. 选型建议
- 需要快速响应、外设持续工作 → 选择睡眠模式
- 需要较低功耗、保留运行状态 → 选择停机模式
- 需要极致低功耗、无需保留状态 → 选择待机模式
六、模式选择
•执行WFI(Wait For Interrupt)或者WFE(Wait For Event)指令后,STM32进入低功耗模式

SLEEPDEEP |
SLEEPONEXIT |
PDDS |
LPDS |
最终模式 | 核心特点 |
|---|---|---|---|---|---|
| 0 | 0 | - | - | 睡眠(立刻) | 轻量级,CPU 暂停,外设运行 |
| 0 | 1 | - | - | 睡眠(中断后) | 中断退出后自动睡眠 |
| 1 | - | 0 | 0 | 停机(调节器开) | 保留数据,唤醒快,功耗中等 |
| 1 | - | 0 | 1 | 停机(低功耗) | 保留数据,功耗更低,唤醒稍慢 |
| 1 | - | 1 | - | 待机 | 极致低功耗,唤醒后复位 |
睡眠模式
•执行完WFI/WFE指令后,STM32进入睡眠模式,程序暂停运行,唤醒后程序从暂停的地方继续运行
•SLEEPONEXIT位决定STM32执行完WFI或WFE后,是立刻进入睡眠,还是等STM32从最低优先级的中断处理程序中退出时进入睡眠
•在睡眠模式下,所有的I/O引脚都保持它们在运行模式时的状态
•WFI指令进入睡眠模式,可被任意一个NVIC响应的中断唤醒
•WFE指令进入睡眠模式,可被唤醒事件唤醒
停止模式
•执行完WFI/WFE指令后,STM32进入停止模式,程序暂停运行,唤醒后程序从暂停的地方继续运行
•1.8V供电区域的所有时钟都被停止,PLL、HSI和HSE被禁止,SRAM和寄存器内容被保留下来
•在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态
•当一个中断或唤醒事件导致退出停止模式时,HSI被选为系统时钟
•当电压调节器处于低功耗模式下,系统从停止模式退出时,会有一段额外的启动延时
•WFI指令进入停止模式,可被任意一个EXTI中断唤醒
WFE指令进入停止模式,可被任意一个EXTI事件唤醒
待机模式
•执行完WFI/WFE指令后,STM32进入待机模式,唤醒后程序从头开始运行
•整个1.8V供电区域被断电,PLL、HSI和HSE也被断电,SRAM和寄存器内容丢失,只有备份的寄存器和待机电路维持供电
•在待机模式下,所有的I/O引脚变为高阻态(浮空输入)
•WKUP引脚的上升沿、RTC闹钟事件的上升沿、NRST引脚上外部复位、IWDG复位退出待机模式