【STM32】PWR电源控制

1 PWR简介

PWR(Power Control)电源控制

PWR负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能

可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD阀值之上时,PVD会触发中断,用于执行紧急关闭任务

低功耗模式包括睡眠模式(Sleep)、停机模式(Stop)和待机模式(Standby),可在系统空闲时,降低STM32的功耗,延长设备使用时间

1.1 电源框图

图分为三部分。最上面是模拟部分供电,VDDA(VDD Analog);中间是数字部分供电(VDD供电区域和1.8V供电区域);后备供电VBAT。

模拟部分供电主要包括AD转换器、温度传感器、复位模块、PLL锁相环。正极是VDDA,负极是VSSA。其中AD转换器还有两根参考的供电脚。

中间是数字部分供电由两部分组成。左边是VDD供电区域,其中包括IO电路、待机电路唤醒逻辑和独立看门狗;右边是通过电压调节器降压到1.8V,包括CPU核心、存储器和内置数字外设。使用低电压运行的目的是降低功耗。电压调节器是给1.8V供电。

后备供电区域包括LSE 32k晶体振荡器、后备寄存器、RCC BDCR寄存器(备份域控制寄存器)和RTC。

低电压检测器,控制开关,VDD有电时,由VDD供电;VDD没电时,由VBAT供电。

1.2 上电复位和掉电复位

1.3 可编程电压监测器

1.4 低功耗模式

睡眠模式:只把CPU时钟关了,对其他电路没有操作。关闭电源比关闭时钟更省电。

PDDS=0停机模式;PDDS=1待机模型

1.5 模式选择

执行WFI(Wait For Interrupt)或者WFE(Wait For Event)指令后,STM32进入低功耗模式

1.5.1 睡眠模式

执行完WFI/WFE指令后,STM32进入睡眠模式,程序暂停运行,唤醒后程序从暂停的地方继续运行

SLEEPONEXIT位决定STM32执行完WFIWFE后,是立刻进入睡眠,还是等STM32从最低优先级的中断处理程序中退出时进入睡眠

在睡眠模式下,所有的I/O引脚都保持它们在运行模式时的状态

WFI指令进入睡眠模式,可被任意一个NVIC响应的中断唤醒

WFE指令进入睡眠模式,可被唤醒事件唤醒

1.5.2 停止模式

执行完WFI/WFE指令后,STM32进入停止模式,程序暂停运行,唤醒后程序从暂停的地方继续运行

1.8V供电区域的所有时钟都被停止,PLLHSIHSE被禁止,SRAM和寄存器内容被保留下来

在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态

当一个中断或唤醒事件导致退出停止模式时,HSI被选为系统时钟

当电压调节器处于低功耗模式下,系统从停止模式退出时,会有一段额外的启动延时

WFI指令进入停止模式,可被任意一个EXTI中断唤醒

WFE指令进入停止模式,可被任意一个EXTI事件唤醒

1.5.3 待机模式

执行完WFI/WFE指令后,STM32进入待机模式,唤醒后程序从头开始运行

整个1.8V供电区域被断电,PLLHSIHSE也被断电,SRAM和寄存器内容丢失,只有备份的寄存器和待机电路维持供电

在待机模式下,所有的I/O引脚变为高阻态(浮空输入)

WKUP引脚的上升沿、RTC闹钟事件的上升沿、NRST引脚上外部复位、IWDG复位退出待机模式

数据手册

参考手册

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-08 09:48:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-08 09:48:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-08 09:48:04       82 阅读
  4. Python语言-面向对象

    2024-01-08 09:48:04       91 阅读

热门阅读

  1. TCP的三次握手和四次挥手

    2024-01-08 09:48:04       59 阅读
  2. 【docker】使用 Dockerfile 构建镜像

    2024-01-08 09:48:04       59 阅读
  3. rust中Atomic Ordering含义总结

    2024-01-08 09:48:04       61 阅读
  4. LeetCode //C - 649. Dota2 Senate

    2024-01-08 09:48:04       54 阅读
  5. mosquitto发布端和订阅端代码范例

    2024-01-08 09:48:04       43 阅读
  6. WKWebView访问时不携带Cookie的解决方案

    2024-01-08 09:48:04       131 阅读
  7. 如何在vscode下,启动jupyter连接远程服务器

    2024-01-08 09:48:04       59 阅读
  8. ObjectInputStream、ObjectOutputStream在TCP的使用

    2024-01-08 09:48:04       47 阅读
  9. 数据结构:STL:vector

    2024-01-08 09:48:04       48 阅读
  10. Spring和Spring Boot的区别

    2024-01-08 09:48:04       56 阅读
  11. SWUSTOJ 133: 水王争霸

    2024-01-08 09:48:04       55 阅读
  12. Vim 快速指南:高效删除文本行

    2024-01-08 09:48:04       54 阅读
  13. 函数指针

    2024-01-08 09:48:04       54 阅读
  14. Sentinel

    Sentinel

    2024-01-08 09:48:04      59 阅读
  15. qt第三天快速回顾

    2024-01-08 09:48:04       63 阅读
  16. 【软件测试】学习笔记-如何做好测试计划

    2024-01-08 09:48:04       54 阅读