STM32—PWR电源控制

news2024/9/21 18:51:47

1.PWR简介

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

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

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

2.低功耗模式

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

 

2.1睡眠模式

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

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

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

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

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

2.2停止模式

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

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

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

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

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

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

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

2.3待机模式

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

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

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

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

3.案例

3.1睡眠模式+串口发送+接收

#include "stm32f10x.h"    // Device header
#include "Delay.h"
#include "OLED.h"
#include "Serial.h"

uint8_t RxData;

int main(void)
{
	OLED_Init();
	OLED_ShowString(1,1,"RxData:");

	Serial_Init();

	
	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();
	}
}

3.2停止模式+对射式红外传感器计次

#include "stm32f10x.h"    // Device header
#include "Delay.h"
#include "OLED.h"
#include "CountSensor.h"


int main(void)
{
	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();
	}
}

3.3待机模式+实时时钟

#include "stm32f10x.h"    // Device header
#include "Delay.h"
#include "OLED.h"
#include "MyRTC.h"


int main(void)
{
	OLED_Init();
	MyRTC_Init();
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);

	OLED_ShowString(1,1,"CNT :");
	OLED_ShowString(2,1,"ALR :");
	OLED_ShowString(3,1,"ALRF:");
	
	PWR_WakeUpPinCmd(ENABLE);
	
	uint32_t Alarm = RTC_GetCounter() + 10;
	RTC_SetAlarm(Alarm);
	OLED_ShowNum(2,6,Alarm,10);
	
	
	while(1)
	{
		OLED_ShowNum(1,6,RTC_GetCounter(),10);
		OLED_ShowNum(3,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(1000);
		
		OLED_Clear();
		
		PWR_EnterSTANDBYMode();
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2043592.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HamronyOS开发5.0【埋点】方案讲解

大多数软件产品上线前,都会采用有规则的日志来对软件进行相关数据的采集,这个过程称为:[埋点],采集的数据主要用于产品分析。 埋点技术已在PC端, 移动端非常成熟,并且有大批量以此为生的公司。 本篇将探究一下Harmon…

STM32—RTC实时时钟

1.Unix时间戳 Unix时间戳定义为从UTC/GMT的1970年1月1日0时0分0秒开始所经过的秒数,不考虑闰秒 时间戳存储在一个秒计数器中,秒计数器为32位/64位的整形变量 世界上所有时区的秒计数器相同,不同时区通过添加偏移来得到当地时间 2.时间戳转…

函数(子程序)的常见、易混淆概念详解【对初学者有帮助】

C语⾔中的函数也被称做子程序,意思就是⼀个完成某项特定的任务的⼀小段代码。 C语⾔标准中提供了许多库函数,点击下面的链接可以查看c语言的库函数和头文件。 C/C官⽅的链接:https://zh.cppreference.com/w/c/header 目录 一、函数头与函…

VsCode配置Cph实现高效刷题教程

cph作用 : 自动创建文件自动获取题目案例自动测试样例自动配置模板 在vscode中安装cph插件 : 在扩展的搜素框中输入Competitive Programming Helper(cph),点击下载即可 在浏览器中安装Competitive Companion 浏览器插件 这里推荐离线下载 : 网址 : Competit…

2024/8/15 不上电测伺服端子是否正常

拿3线220V举例,拿两种测量表举例,下图均为正常情况 L1和L2测量,L3不用管(空的)。 1.先测输入L1/2是否短路,输出UVW是短路为正常(与变频器相反) 2.正(红)—RS…

PL/SQL是什么软件 PL/SQL最新版本功能介绍

PL/SQL是什么软件?PL/SQL软件多指PL/SQL Developer,这是一款专业的PL/SQL开发工具,它可以帮助开发者编写、调试和优化PL/SQL代码,提高开发效率和质量。本文将介绍PL/SQL Developer 15最新版本的主要功能和特点。 一、PL/SQL是什么…

华为od统一考试B卷【比赛】python实现

def split_params(param_str): return list(map(int, param_str.split(,))) def main(): # 获取输入 target_str input().strip() # 输入验证,拆分并转换为整数 try: m, n split_params(target_str) except ValueError: print(-1) return # 检查 M 和 …

opencascade Adaptor3d_Curve源码学习

opencascade Adaptor3d_Curve 前言 用于几何算法工作的3D曲线的根类。 适配曲线是曲线提供的服务与使用该曲线的算法所需服务之间的接口。 提供了两个派生具体类: GeomAdaptor_Curve,用于Geom包中的曲线Adaptor3d_CurveOnSurface,用于Geom包…

时钟缓冲器的相关知识

时钟缓冲器是比较常用的器件,其主要功能作用有时钟信号复制,时钟信号格式转换,时钟信号电平转换等。我们下面简单了解下: 1.时钟信号复制 例如ICS553芯片,其将单路输入时钟信号复制4份进行输出,输出信号具…

CSS相关修改样式、伪类样式

一、css颜色 1.颜色表示法: 直接以单词来表示颜色,如red,green。 2.十六进制表示法:(常用) 以#开头的6位十六进制数,如#000000(#000)。 3.RGB三原色表示法&#xff…

Spark数据倾斜解决产生原因和解决方案

1、提高shuffle操作的并行度 在对RDD执行shuffle算子时,给shuffle算子传入一个参数,比如reduceByKey(1000),该参数就设置了这个shuffle算子执行 时shuffle read task的数量,即Spark.sql.shuffle.partitions,该参数代表…

AI/机器学习(计算机视觉/NLP)方向面试复习5

目录 1. GNN graph neural network 2. 0-1背包问题 3. 0-1背包问题(一维dp) 4. 螺旋矩阵 按顺时针顺序返回所有数 5. fasttext与glove 1. GNN graph neural network (1)图的基本定义 GNN的Roadmap:其中用的最常见…

SD卡电路设计基础

一、定义 SD卡按尺寸分类可分为三类:标准 SD 卡、Mini SD 卡和 Micro SD 卡。其中Mini SD 卡比较少见,标准 SD 卡因为体积较大主要用在数码相机等对体积要求不严格的地方,我们最常用的是 Micro SD 卡,原名Trans-flash Card (TF 卡)。 Micro SD 作用:一…

★ C++基础篇 ★ 栈和队列

Ciallo&#xff5e;(∠・ω< )⌒☆ ~ 今天&#xff0c;我将继续和大家一起学习C基础篇第八章----栈和队列 ~ 目录 一 容器适配器 二 deque的简单介绍 2.1 deque的原理介绍 2.2 deque vector list 的优缺点 2.2.1 vector 2.2.2 list 2.2.3 deque 2.3 为什么选择deq…

ETL数据集成丨PostgreSQL数据迁移至Hive数据库

PostgreSQL数据迁移至Hive数据库 在现代企业数据架构中&#xff0c;将数据从关系型数据库如PostgreSQL迁移到分布式数据仓库系统如Hive&#xff0c;是一项至关重要的任务&#xff0c;旨在实现数据的高效存储、处理与分析。这一过程不仅涉及技术层面的操作转换&#xff0c;还深…

unity项目打包为webgl后应用于vue项目中(iframe模式)的数据交互

参考文章&#xff1a; 1.Unity打包WebGL: 导入Vue 2.unity文档-WebGL&#xff1a;与浏览器脚本交互 3.unity与vue交互(无第三方插件&#xff09; 目录 一、前期工作1.新建.jslib文件2.新建.cs脚本3. 新建一个Text对象和button按钮对象4.添加脚本空对象UIEvent5.导出unity为w…

SpringBoot-配置加载顺序

目录 前言 样例 内部配置加载顺序 ​ 样例 小结 前言 我之前写的配置文件&#xff0c;都是放在resources文件夹&#xff0c;根据当前目录下&#xff0c;优先级的高低&#xff0c;判断谁先被加载。但实际开发中&#xff0c;我们写的配置文件并不是&#xff0c;都放…

利用CICD管道和MLOps自动化微调、部署亚马逊云科技上的AI大语言模型

项目简介&#xff1a; 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践&#xff0c;并应用到自己的日常工作里。 本次介绍的是如何在亚马逊云科技利用CodeP…

DeepLearning.AI课程:从代码层面理解预训练大语言模型(Pretraining LLMs)

本文是学习 https://www.deeplearning.ai/short-courses/pretraining-llms/ 这门课的学习笔记。 What you’ll learn in this course In Pretraining LLMs you’ll explore the first step of training large language models using a technique called pretraining. You’ll …

如何从Mac 电脑恢复已删除的文件

您是否曾经不小心从Mac中删除了文件或文件夹&#xff0c;然后后来意识到您确实需要它&#xff1f;或者你有没有清空过你的垃圾桶&#xff0c;片刻后才意识到你不小心也从那里删除了一些重要文件&#xff1f;如果是&#xff0c;那么这篇博文就是为你准备的&#xff01; 今天&am…