电源管理
大约 2 分钟
电源管理
外设介绍
电源监控
芯片通过 VDD 引脚从外部获取电源
上电复位与掉电复位
- 当电源电压异常时, 芯片会保持在复位状态, 防止强行工作带来的后果
- 当刚开始通电时 VDD < VPOR, 芯片处于掉电复位状态
- 当 VDD > VPOR 后, 芯片处于正常工作状态
- 当正常工作时, VDD < VPDR, 芯片处于掉电复位状态
电压检测器 PVD
- 除了自动检测, 还可以手动设置可编程电压检测器
- 当电压低于 VPVD 时, 产生 PVD中断(EXTI16)
- 可通过寄存器 PWR_CSR 设置 VPVD 等级(查表)
电源系统
- VDDA 供电, 将 VDD 单独分出给 ADC 模块供电, 提高精度
- 调压器供电, 为除了备份域与待机电路外的电路供电(1.8V), 包括内核, 外设, RAM
- 运行模式 1.8V 区域全功率运行
- 停止模式 1.8V 区域所有时钟关闭(外设停止运行), 但保留内核寄存器和 SRAM 的内容
- 待机模式 1.8V 区域完全断电, 所有内容丢失
- 备份供电, 通过 VBAT 供电(实际上为一个 3V 纽扣电池), 为 LSE 振动器, RTC 及备份寄存器供电, 断电后保持运行
功耗模式
STM32 具有 运行, 睡眠, 停止, 待机四种模式
唤醒方式
- 模式 WFI(wait for interrupt) 下, 由中断唤醒
- 模式 WFE(wait for event) 下, 由事件唤醒
睡眠模式
- 除 NVIC, 系统时钟外, 内核停止, 所有外设照常工作
- 任意中断均可唤醒
- 唤醒后, 先退出中断服务函数, 然后从进入睡眠处继续运行
- SLEEPDEEP = 0, 调用 WFI 或 WFE 指令进入
停止模式
- 使用任意 EXTI 中断唤醒
- 唤醒后需要等待 HSI 启动与模式切换
- 唤醒后, 先退出中断服务函数, 然后从进入睡眠处继续运行
- SLEEPDEEP = 1, PWR_CR 中位 PDDS = 0, 调用 WFI 或 WFE 指令进入
待机模式
- WKUP 上升沿, RTC 闹钟, 外部复位, IWDG 复位唤醒
- 唤醒后需要等待芯片复位
- 唤醒后相当于芯片复位, 从头开始执行代码
电源管理函数
- __WFI() 从 WFI 模式进入睡眠
- __WFE() 从 WFE 模式进入睡眠
- PWR_PVDLevelConfig() 配置电压检测等级