STM32--PWR电源控制
文章目录
- PWR
- 电源
- 电源管理器
- 上电复位(POR)和掉电复位(PDR)
- 可编程电压监测器(PVD)
- 低功耗模式
- 睡眠模式
- 停止模式
- 待机模式
- 睡眠模式工程
- 停止模式
- 待机模式
PWR
STM32的PWR模块是其电源管理系统的核心部分,负责控制和管理芯片的供电和电源状态。
电源
STM32的工作电压(VDD)为2.0~3.6V。通过内置的电压调节器提供所需的1.8V电源。
当主电源VDD掉电后,通过VBAT脚为实时时钟(RTC)和备份寄存器提供电源。


VDDA供电区域是为模拟电路提供电源的区域。VDDA通常由外部电源提供,通过电源管理单元(PWR)进行控制和管理。
VDDA的电压范围:2.4V~3.6V(具体取决于不同型号的芯片),并且必须在此范围内保持稳定和可靠的供电。
为了提高转换的精确度, ADC使用一个独立的电源供电,过滤和屏蔽来自印刷电路板上的毛刺干扰。
对于不同的引脚封装,所需的电源引脚也是不同的。(如图中的VREF)。

这部分是为数字电路提供的电源区域,也是最主要的电源区域。
Vdd的电压范围:1.8V~3.6V
供电区域包括输入输出接口的电路,待机电路(唤醒逻辑、看门狗)以及电压调节器。
对于我们外设电路,一般都为3.3V,当他连接到内电路时,会通过电压调节器调整到1.8V来链接CPU核心存储器和内置数字外设,此操作是为了能够减少电源消耗。

后备供电区域就是上一节为RTC和备份寄存器提供能源的区域。
主要作用是在主电源失效或断电时,提供持久的电源支持和数据保护。
RTC时钟链接处
电源管理器
电源管理器一般用于电源的监测和进行复位操作。
上电复位(POR)和掉电复位(PDR)

在上电复位(POR)和掉电复位(PDR)方面,PWR模块监测VDD/DDA是否低于设定的阈值,当电压低于设定的阈值时,系统保持在复位状态,以确保电路的正常运行。这种情况一般发生在芯片刚刚接通电源或电源恢复时。上电复位会将芯片的所有寄存器和内部状态初始化为默认值,使系统进入一个已知的、可靠的状态。
在图中我们会发现上电复位会有一些滞后时间,这是由于电源和芯片内部的复位电路之间的时间延迟引起的。当供电电压开始上升时,电源需要经过一个上升时间才能稳定到达复位阈值之以上,同时芯片内部的复位电路也需要一定时间来检测并响应供电电压的变化。这种供电电压上升和内部电路检测的时间延迟导致了上电复位的滞后。
掉电复位在芯片的供电电压低于掉电复位阈值(PDR)以下时,系统会触发掉电复位,将芯片的所有寄存器和内部状态初始化为默认值。
可编程电压监测器(PVD)


下面是Vpvd可以选择监测电压范围


总的来说,监测电压范围为2.1V~2.9V;一旦有设置PVD检测,超过这个范围的,就会输出PVD信号。
低功耗模式
在系统或者电源复位后,微控制器会处于运行状态;在CPU不需要运行时,我们可以通过低功耗模式,以实现节能和延长电池寿命。低功耗模式会通过关闭或减少一些不必要的外设和时钟来降低系统功耗,同时又保持一些关键功能的运行。且对于关闭的一些外设,在需要运行的时候,要有手段来唤醒这些外设。



开启流程:

睡眠模式

停止模式

待机模式

睡眠模式工程
SWART串口链接入口
通过对串口的发送和接收数据工程进行验证。
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "Buzzer.h"
#include "Serial.h"
#include "OLED.h"
int main()
{uint8_t Rxdata;OLED_Init();Serial_Init();OLED_ShowString(1,1,"RxData:");while(1){if(Serial_GetRxFlag()==1){Rxdata=Serial_GetRxData();Serial_SendByte(Rxdata);OLED_ShowHexNum(1,8,Rxdata,2);}OLED_ShowString(2,1,"Running");Delay_ms(100);OLED_ShowString(2,1," ");Delay_ms(100);__WFI();}}
当没有睡眠模式时,由于程序不断的跑动,Running会在屏幕上不停闪烁;通过睡眠模式,来使SWART串口非发送和接收状态,不会进行程序的跑动,只有在串口发送和接收时,才会从睡眠模式恢复过来,节省消耗;
WFI是等待中断;只要触发该指令,就会进入睡眠模式;通过接收数据的中断来唤醒。
在开启流程图还需要SLEEPDEEP和SLEEPONEXIT,由于PWR没有内置该模式函数,我们就从简入手;不开这两个相关寄存器也不影响操作;
停止模式
外部中断文章链接入口
通过对对射式红外传感器工程的触发,来验证停止模式。
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "Buzzer.h"
#include "LightSensor.h"
#include "OLED.h"
#include "CountSensor.h"
int main()
{OLED_Init();CountSensor_Init();RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);OLED_ShowString(1,1,"Count:");while(1){OLED_ShowNum(1,7,CountSensor_Get(),5);OLED_ShowString(2,1,"Running");Delay_ms(100);OLED_ShowString(2,1," ");Delay_ms(100);PWR_EnterSTOPMode(PWR_Regulator_ON,PWR_STOPEntry_WFI);SystemInit();}
}
与上一个工程相同的道理,利用闪烁来表示程序的不断进行,停止模式会使程序中断,只有触发外部中断时,才有唤醒电源;
这是库函数内置的停止模式,第一个参数是选择开启电压调节器低功耗和开启;第二个参数是选择唤醒事件指令或者是中断指令;
由于一个中断或唤醒事件导致退出停止模式时,HSI被选为系统时钟,唤醒后时钟频率变为8MHz,需要通过SystemInit()函数来初始化时钟频率。
待机模式
RTC时钟链接处
通过RTC闹钟唤醒和AWAUP的上升唤醒来验证待机模式;
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
#include "MyRTC.h"int main()
{Time time;time.year=2023;time.mon=1;time.mday=1;time.hour=23;time.min=59;time.sec=55;OLED_Init();MyRTC_Init(&time);RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);// PWR_WakeUpPinCmd(ENABLE);MyRTC_SetTime(&time);OLED_ShowString(1, 1, "ALR :");OLED_ShowString(2, 1, "ALRF:");OLED_ShowString(3, 1, "CNT :");uint32_t Alarm=RTC_GetCounter()+10;RTC_SetAlarm(Alarm);OLED_ShowNum(1,6,Alarm,10);while (1){MyRTC_ReadTime(&time);OLED_ShowNum(3, 6, RTC_GetCounter(), 10);OLED_ShowNum(2, 6, RTC_GetFlagStatus(RTC_FLAG_ALR), 1);OLED_ShowString(4,1,"Running");Delay_ms(100);OLED_ShowString(4,1," ");Delay_ms(100);// OLED_ShowString(4, 9, "STANDBY");// Delay_ms(1000);// OLED_ShowString(4, 9, " ");// Delay_ms(100);// OLED_Clear();PWR_EnterSTANDBYMode();}}
让闹钟值大于CNT十秒,当达到闹钟值时,就会让标志位置1,可以先观察标志位是否置换,然后再执行待机模式。
下面的只要让一PA0(有WAUP功能)引脚接上正极,就能触发唤醒。
相关文章:
STM32--PWR电源控制
文章目录 PWR电源电源管理器上电复位(POR)和掉电复位(PDR) 可编程电压监测器(PVD)低功耗模式睡眠模式停止模式待机模式 睡眠模式工程停止模式待机模式 PWR STM32的PWR模块是其电源管理系统的核心部分&…...
vue+element-ui el-descriptions 详情渲染组件二次封装(Vue项目)
目录 1、需求 2.想要的效果就是由图一变成图二 编辑 3.组件集成了以下功能 4.参数配置 示例代码 参数说明 5,组件 6.页面使用 1、需求 一般后台管理系统,通常页面都有增删改查;而查不外乎就是渲染新增/修改的数据(由输入框变成输…...
Nvme 协议第一章节学习
Nvme Express Base Specification 第一章 简介 1.1概述 NVM ExpressTM(NVMeTM)接口允许主机软件与非易失性存储器子系统通信。 此接口针对企业和客户端固态驱动器进行了优化,通常作为寄存器级接口连接到PCI Express接口。 注:在…...
三维模型3DTile格式轻量化压缩处理工具常用几款软件介绍
三维模型3DTile格式轻量化压缩处理工具常用几款软件介绍 三维模型3DTile格式的轻量化处理旨在减少模型的存储空间和提高渲染性能。以下是一些推荐的工具软件,可以用于实现这个目的: MeshLab:MeshLab是一个开源的三维模型处理软件,…...
【工具篇】高级 TypeScript 案例
本文说明:TypeScript 相关文章,了解更多特性。 网页编辑器: https://www.typescriptlang.org/zh/play 文章目录 TypeScript联合类型交叉类型装饰器混入 mixin泛型Promise 简单应用 TypeScript 联合类型 概念:当某个函数只有一个参…...
利用Python将dataframe格式的所有列的数据类型转换为分类数据类型
一、样例理解 import pandas as pd import numpy as np# 创建测试数据 feature_names [col1 , col2, col3, col4, col5, col6] values np.random.randint(20, size(10,6))dataset pd.DataFrame(data values, columns feature_names)print("转换前的数据为\n",d…...
安全线程的集合
1. CopyOnWriteArrayList package com.kuang.unsafe;import java.util.*; import java.util.concurrent.CopyOnWriteArrayList;//java.util.ConcurrentModificationException 并发修改异常! 因为List集合线程不安全! public class ListTest {public st…...
用GoConvey编写单元测试的一些总结
一、尽量用Convey将所有测试用例的Convey汇总 用Convey嵌套的方法,将所有测试用例的Convey用一个大的Convey包裹起来,每个测试函数下只有一个大的Convey。比如下面的示例代码: import ("testing". "github.com/smartystreet…...
Linux Arm64修改页表项属性
文章目录 前言一、获取pte1.1 pgd_offset1.2 pud_offset1.3 pmd_offset1.4 pte_offset_kernel 二、修改pte属性2.1 set/clear_pte_bit2.2 pte_wrprotect2.3 pte_mkwrite2.4 pte_mkclean2.5 pte_mkdirty 三、set_pte_at四、__flush_tlb_kernel_pgtable五、demo参考资料 前言 在…...
elasticsearch14-高亮
个人名片: 博主:酒徒ᝰ. 个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。 本篇励志:三人行,必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud…...
HUAWEI华为MateBook X Pro 2021款 i7 集显(MACHD-WFE9Q)原装出厂Win10系统20H2
华为笔记本电脑原厂系统自带指纹驱动、显卡驱动、声卡驱动、网卡驱动等所有驱动、出厂主题壁纸、系统属性华为专属LOGO标志、Office办公软件、华为电脑管家等预装程序 链接:https://pan.baidu.com/s/1oeSM0ciwyyRIKms5tR4SNA?pwdo2gq 提取码:o2gq...
21天学会C++:Day9----初识类与对象
CSDN的uu们,大家好。这里是C入门的第九讲。 座右铭:前路坎坷,披荆斩棘,扶摇直上。 博客主页: 姬如祎 收录专栏:C专题 目录 1. 面向过程与面向对象 2. 类的定义 3. 类中的访问限定符 3.1 访问限定符的…...
【深度学习】 Python 和 NumPy 系列教程(十七):Matplotlib详解:2、3d绘图类型(3)3D条形图(3D Bar Plot)
目录 一、前言 二、实验环境 三、Matplotlib详解 1、2d绘图类型 2、3d绘图类型 0. 设置中文字体 1. 线框图 2. 3D散点图 3. 3D条形图(3D Bar Plot) 一、前言 Python是一种高级编程语言,由Guido van Rossum于1991年创建。它以简洁、易读…...
基于Spring Boot+vue的酒店管理系统
文章目录 项目介绍主要功能截图:前台后台部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring Boot+vue的酒店管理…...
Python 通过threading模块实现多线程
视频版教程 Python3零基础7天入门实战视频教程 我们可以使用threading模块的Thread类的构造器来创建线程 def _ init _(self, groupNone, targetNone, nameNone, args(), kwargsNone, *, daemonNone): 上面的构造器涉及如下几个参数。 group:指定该线程所属的线程组。目前该…...
用一个RecyclerView实现二级评论
先上个效果图(没有UI,将就看吧),写代码的整个过程花了4个小时左右,相比当初自己开发需求已经快了很多了哈。 给产品估个两天时间,摸一天半的鱼不过分吧(手动斜眼) 需求拆分 这种大家…...
音视频 SDL简介
一、SDL简介 SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Win…...
7.前端·新建子模块与开发(自动生成)
文章目录 学习地址视频笔记自动代码生成模式开发增删改查功能调试功能权限分配 脚本实现权限分配 学习地址 https://www.bilibili.com/video/BV13g411Y7GS/?p15&spm_id_frompageDriver&vd_sourceed09a620bf87401694f763818a31c91e 视频笔记 自动代码生成模式开发 …...
Linux 创建目录
语法:mkdir xxx Linux路径 在当前目录下创建文件夹 在/目录下创建文件夹 如果想要一次性创建多个层级的目录,如下图 会报错,因为上级目录test并不存在,所以无法创建test目录 可以通过-p选项,将一整个链条都创建完成…...
【DIY小记】修复Win10启动出现蓝屏0xc0000185错误的一些方法
近些日子想到自己尘封已久的笔记本电脑没有开机了,很多软件驱动之类的没有更新,就打算把电脑开起来做一轮批量升级。但开电脑的时候很久没有进入Win10桌面,等了很长一段时间蓝屏提示0xc0000185错误,说系统需要恢复。经历了一番折腾…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...



](https://img-blog.csdnimg.cn/0aa0140e36974b74bd55f8f2fbcb05d1.png)

