PWR电源控制

一、PWR简介

1、PWR(Power Control)电源控制

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

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

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

2、电源框图

3、上电复位和掉电复位

4、可编程电压监测器

5、低功耗模式

6、模式选择

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

7、睡眠模式

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

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

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

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

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

8、停止模式

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

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

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

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

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

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

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

9、待机模式

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

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

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

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

二、修改主频

1、按照以下接线方式连接,并将STLINK插到电脑上

2、解除只读

打开工程文件夹,对应文件的位置,右键属性

取消只读的勾

如果想要整个文件夹都取消只读,就需要对文件夹的属性只读去掉就好了

3、修改主频

(1)修改主频为36MHz

(2)编写main.c文件

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"int main(void)
{OLED_Init();OLED_ShowString(1,1,"SYSCLK:");OLED_ShowNum(1,8,SystemCoreClock,8);while(1){OLED_ShowString(2,1,"Running");Delay_ms(500);OLED_ShowString(2,1,"       ");Delay_ms(500);}
}

4、实现效果

修改主频

主频由72MHz修改到36MHz,Running闪烁周期由1s变成2s 

三、睡眠模式&串口发送和接收

1、按照以下接线方式连接,并将STLINK插到电脑上

2、修改串口发送和接收的main.c文件

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "Serial.h"uint8_t RxData;int main(void)
{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();//中断唤醒}
}

3、实现效果

睡眠模式下串口发送和接收

        在主循环最后执行WFI,CPU会立刻睡眠,程序停在WFI指令这里,发送数据,USART外设收到数据,产生中断,唤醒CPU,程序在暂停的地方继续运行,先进入中断再回到主循环

        Running闪烁一次,程序在收到数据之后,可以唤醒工作一次,CPU在空闲时睡眠,节约用电

        注:再次下载程序显示下载不成功,所以按住复位键,再按下载键,最后松开复位键才可以下载成功

四、停止模式&对射式红外传感器计次

1、按照以下接线方式连接,并将STLINK插到电脑上

2、PWR库函数的功能

3、修改对射式红外传感器计次的main.c文件

#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);//开启PWR时钟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();//重新启动HSE,配置72M的主频,退出停止模式时,HSI(8MHz)被选为系统时钟,首次复位后,SystemInit函数配置的是HSE*9倍频的72M主频,所以复位后第一次Running闪烁很快}
}

4、实现效果

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

五、待机模式&实时时钟

1、按照以下接线方式连接,并将STLINK插到电脑上

2、修改实时时钟的main.c文件

#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);	//开启PWR时钟OLED_ShowString(1,1,"CNT :");//秒计数器OLED_ShowString(2,1,"ALR :");//闹钟值OLED_ShowString(3,1,"ALRF:");//闹钟标志位PWR_WakeUpPinCmd(ENABLE);//WKUP引脚唤醒,WKUP引脚悬空就是低电平,WKUP上升沿唤起待机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();//进入待机模式,待机模式退出,程序从头开始,待机模式以下的代码不会别执行}
}

3、实现效果

待机模式下实时时钟

        最开始显示一些信息,进入待机,OLED清屏,等待一会,闹钟触发之后唤醒一次,并用WKUP引脚唤醒待机模式,WKUP引脚悬空就是低电平,WKUP上升沿唤起待机

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五十五、openlayers官网示例Loading Spinner解析——给地图添加loading效果,瓦片图层加载时等待效果

官网demo地址: Loading Spinner 这篇介绍了一个非常简单的loading效果 利用地图的loadstart和loadend事件,动态的添加和删除class名。 map.on("loadstart", function () {map.getTargetElement().classList.add("spinner");});map…

【数据结构】第十九弹---C语言实现冒泡排序算法

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、冒泡排序基本思想 2、代码的初步实现 3、代码的优化 4、代码的测试 5、时空复杂度分析 6、模拟实现qsort 6.1、冒泡排序函数 6.2、交换数…

2024信息系统、信号处理与通信技术国际会议(ICISPCT2024)

2024信息系统、信号处理与通信技术国际会议(ICISPCT2024) 会议简介 2024国际信息系统、信号处理与通信技术大会(ICISPCT2024)将在青岛隆重开幕。本次会议旨在汇聚全球信息系统、信号处理和通信技术领域的专家学者,共同探索行业…

Docker之overlay2的迁移

原因 docker默认将文件及其容器放置在了系统盘的挂载区内,如果长期使用会发现系统挂载区被overlay2挤爆了,因此在一开始我们将其迁移在大容量外挂磁盘上,就可以避免系统盘被挤爆,放心使用. 具体操作 # 停止容器 systemctl stop docker# 修改容器配置&#xff0c…

基于STM32的智能病房监控和人脸识别系统设计(毕业设计)

摘 要 随着技术的不断进步和医疗需求的不断增长,智能病房控制系统有望在医疗领域发挥更大的作用。基于此,本文研究设计了一款低成本、操作简单、适用性强的基于STM32的智能病房监控和人脸识别系统。该系统通过STM32作为控制器和OpenMV对人脸分辨进行门…

常见调试器介绍

目录 常见调试器 1.1 ST-Link 1.2 DAPLink 1.3 JLink 常见调试器 市面上有很多的调试器,下面是大家比较常见的一些调试器, 比如:ST-Link、DAPLink、JLink、Ulink等 1.1 ST-Link ST-Link是一种用于STM8及STM32系列单片机的调试器和下载…

windows使用curl命令出现乱码的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

视频融合平台LntonCVS视频监控汇聚平台:构建多元接入与智能管理的安防新生态

一、视频融合平台概述 视频融合平台支持多种协议和设备类型的接入,包括GB28181、Onvif、RTSP、RTMP、海康SDK、Ehome、大华SDK、宇视SDK等。它能够统一整合和管理来自不同品牌、不同协议的视频资源,构建视频数据资源池,并通过视频资源目录为…

Mac安装多个jdk环境(jdk8+jdk17)保姆级

Mac安装多个jdk环境(jdk8jdk17)保姆级 背景:新机安装开发环境发现需要找很多文章,,,,这里一篇文章安装所有环境 文章目录 Mac安装多个jdk环境(jdk8jdk17)保姆级&#x1f…

从社交网络到元宇宙:Facebook的战略转型

随着科技的迅猛发展和数字化时代的深入,社交网络已不再局限于简单的信息交流和社交互动,而是逐步向更广阔、更深远的虚拟现实空间——元宇宙(Metaverse)转变。作为全球最大的社交网络平台之一,Facebook正在积极推动这一…

甘肃旅游服务平台的设计

甘肃旅游服务平台的设计 管理员账户功能包括:系统首页,个人中心,管理员管理,公告信息管理,景点管理,酒店管理,基础数据管理,美食管理 前台账户功能包括:系统首页&#xf…

没等来百度惊艳的All in AI,却等来了国产之光的盘古大模型 5.0

6月21日,华为开发者大会(HDC 2024)在广东东莞正式开幕。盘古大模型5.0的更新,也是此次HDC2024的另一项重头戏。在过去的一年中,盘古大模型正在疯狂向各行各业渗透。 此次,华为方面展示了他们在具身智能、医…

squareline studio浅尝(1)在对话框添加键盘

因项目需要,需要修改IP地址等参数,需要编辑文本对话框内容,这时候就需要调用键盘,操作如下。主要为了做笔记。如有误导请及时留言。 1)拖一个键盘到对话框页面。默认把它隐藏(flag:hidden) 2&…

MURF3040CTR-ASEMI智能AI应用MURF3040CTR

编辑:ll MURF3040CTR-ASEMI智能AI应用MURF3040CTR 型号:MURF3040CTR 品牌:ASEMI 封装:TO-220F 恢复时间:35ns 最大平均正向电流(IF):30A 最大循环峰值反向电压(VR…

2024.6.23周报

目录 摘要 ABSTRACT 一、文献阅读 一、题目 二、摘要 三、网络架构 四、创新点 五、文章解读 1、Introduction 2、Method 3、实验 4、结论 二、代码实验 总结 摘要 本周阅读了一篇题目为NAS-PINN: NEURAL ARCHITECTURE SEARCH-GUIDED PHYSICS-INFORMED NEURAL N…

【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(三)-shell语法

主要通过讲解shell中的一些基本语法,可以当作日常的笔记来进行查询和记忆。 文章目录 前言 一、shell 二、shell语法 1.运行方式 2.注释 3.变量 4.默认变量 5.数组 总结 前言 主要通过讲解shell中的一些基本语法,可以当作日常的笔记来进行查询和记忆。…

html--404页面

<!DOCTYPE html> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <meta http-equiv"X-UA-Compatible" content"IEedge,chrome1"> <title>404 错误页面不存在&…

某程序员:30岁了,老婆管钱,背着我买了50万股票,亏了20w,强制她清仓后又买了36万

“辛辛苦苦攒了几年钱&#xff0c;本想买房买车&#xff0c;结果全被老婆炒股亏掉了&#xff01;” 近日&#xff0c;一位30岁的程序员大哥在网上吐苦水&#xff0c;引发了网友们的热议。 这位程序员大哥和妻子结婚后&#xff0c;一直秉持着“男主外&#xff0c;女主内”的传统…

NLP大语言模型的缩放定律

一、简述 ​论文《神经语言模型的缩放定律》包含对交叉熵损失的语言模型性能的经验缩放定律的研究&#xff0c;重点关注Transformer架构。 https://arxiv.org/pdf/2001.08361.pdfhttps://arxiv.org/pdf/2001.08361.pdf 实验表明&#xff0c;测试损失与模型大小、数据集…

【软件工程】【22.04】p1

关键字&#xff1a; 软件需求规约基本性质、数据字典构成、内聚程度最高功能内聚、公有属性、RUP实体类、评审、测试序列、软件确认过程、CMMI能力等级 软件需求分类、DFD数据流图组成&#xff08;实体&#xff09;、经典详细设计、数据耦合、关联多重性、状态图、黑盒测试、…