STM32 低功耗模式

目录

背景

低功耗模式

睡眠模式

进入睡眠模式

退出睡眠模式

停止模式

进入停止模式

退出停止模式

待机模式

进入待机模式

退出待机模式

程序

睡眠模式

休眠模式配置

进入休眠模式

退出睡眠模式

停止模式

停止模式配置

进入停止模式

退出停止模式

待机模式

待机模式配置

进入待机模式

退出待机模式


背景

STM32的低功耗模式主要用于减少设备的能耗,从而延长设备的使用时间,特别是在依赖电池供电的设备中尤为重要‌。通过进入不同的低功耗模式,STM32可以在不同的应用场景下实现最佳的能耗管理。本篇文章会介绍STM32的三种低功耗模式、以及如何进入和退出这三种模式。

低功耗模式

在系统或电源复位以后,微控制器处于运行状态。当 CPU 不需继续运行时,可以利用多种低功
耗模式来节省功耗,例如等待某个外部事件时。用户需要根据最低电源消耗、最快速启动时间
和可用的唤醒源等条件,选定一个最佳的低功耗模式。
STM32F10xxx 有三种低功耗模式:
● 睡眠模式 (Cortex™-M3 内核停止,所有外设包括 Cortex-M3 核心的外设,如 NVIC 、系统时
(SysTick) 等仍在运行 )
● 停止模式 ( 所有的时钟都已停止 )
● 待机模式 (1.8V 电源关闭 )
三种低功耗模式的区别
睡眠模式:停止CPU
停止模式:停止CPU和时钟和芯片内部外设(外设中的外是相对与内核的内而言的!)
待机模式:CPU停止、外设停止、时钟停止、SRAM也停止,寄存器停止、只有备份寄存器保存

睡眠模式

进入睡眠模式

通过执行 WFI或WFE指令进入睡眠状态 。根据 Cortex™-M3 系统控制寄存器中的 SLEEPONEXIT
位的值,有两种选项可用于选择睡眠模式进入机制:
SLEEP-NOW :如果 SLEEPONEXIT 位被清除,当 WRI WFE 被执行时,微控制器立即进
入睡眠模式。
SLEEP-ON-EXIT :如果 SLEEPONEXIT 位被置位,系统从最低优先级的中断处理程序中退
出时,微控制器就立即进入睡眠模式。
在睡眠模式下,所有的 I/O 引脚都保持它们在运行模式时的状态。

退出睡眠模式

如果执行 WFI 指令进入睡眠模式, 任意一个被嵌套向量中断控制器响应的外设中断都能将系统从
睡眠模式唤醒
如果执行 WFE 指令进入睡眠模式,则一旦发生唤醒事件时,微处理器都将从睡眠模式退出。

停止模式

停止模式是在 Cortex™-M3 的深睡眠模式基础上结合了外设的时钟控制机制,在停止模式下电压
调节器可运行在正常或低功耗模式。此时在 1.8V 供电区域的的所有时钟都被停止, PLL HSI
HSE RC 振荡器的功能被禁止, SRAM 和寄存器内容被保留下来。
在停止模式下,所有的 I/O 引脚都保持它们在运行模式时的状态。

进入停止模式

关于如何进入停止模式,详见表 11
在停止模式下,通过设置电源控制寄存器 (PWR_CR) LPDS 位使内部调节器进入低功耗模式,
能够降低更多的功耗。
如果正在进行闪存编程,直到对内存访问完成,系统才进入停止模式。
如果正在进行对 APB 的访问,直到对 APB 访问完成,系统才进入停止模式。

退出停止模式

关于如何退出停止模式,
当一个中断或唤醒事件导致退出停止模式时,HSI RC振荡器被选为系统时钟。(也就是说退出之后,需要手动重新配置RCC复位时钟控制) 当电压调节器处于低功耗模式下,当系统从停止模式退出时,将会有一段额外的启动延时。如果在停止模式期间保持内部调节器开启,则退出启动时间会缩短,但相应的功耗会增加。

待机模式

待机模式可实现系统的最低功耗。该模式是在 Cortex-M3 深睡眠模式时关闭电压调节器。整个
1.8V 供电区域被断电。 PLL HSI HSE 振荡器也被断电。 SRAM 和寄存器内容丢失。只有备份
的寄存器和待机电路维持供电 ( 见图 4)

进入待机模式

关于如何进入待机模式,详见表 12

退出待机模式

当一个外部复位 (NRST 引脚 ) IWDG 复位、 WKUP 引脚上的上升沿或 RTC 闹钟事件的上升沿发
生时 ( 见图 154 :简化的 RTC 框图 ) ,微控制器从待机模式退出。从待机唤醒后,除了电源控制 /
态寄存器 (PWR_CSR)( 见第 4.4.2 ) ,所有寄存器被复位。
从待机模式唤醒后的代码执行等同于复位后的执行 ( 采样启动模式引脚、读取复位向量等 ) 。电源
控制 / 状态寄存器 (PWR_CSR)( 见第 4.4.2 ) 将会指示内核由待机状态退出。

程序

睡眠模式

休眠模式配置

KEY_INT_INIT();//外部中断初始化(PA0是按键中断输入)NVIC_SystemLPConfig(NVIC_LP_SEVONPEND,DISABLE);	//SEVONPEND: 0:只有使能的中断或事件才能唤醒内核。1:任何中断和事件都可以唤醒内核。(0=DISABLE,1=ENABLE) 
NVIC_SystemLPConfig(NVIC_LP_SLEEPDEEP,DISABLE);	//SLEEPDEEP: 0:低功耗模式为睡眠模式。1:进入低功耗时为深度睡眠模式。
NVIC_SystemLPConfig(NVIC_LP_SLEEPONEXIT,DISABLE); //SLEEPONEXIT: 0: 被唤醒进入线程模式后不再进入睡眠模式。1:被唤醒后执行完相应的中断处理函数后进入睡眠模式。

PS:ISR Interrupt Serve Routine(中断服务程序)

进入休眠模式

		__WFI(); //进入睡眠模式,等待中断唤醒
//		__WFE(); //进入睡眠模式,等待事件唤醒

退出睡眠模式

通过外部中断退出

停止模式

停止模式配置

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);  //使能电源PWR时钟

进入停止模式

PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);//进入停机模式

PWR_EnterSTOPMode库函数的定义如下

退出停止模式

RCC_Configuration(); //系统时钟初始化(停机唤醒后会改用HSI时钟,需要重新对时钟初始化) 
外部中断发生
退出停止模式之后,一定要重新配置RCC!因为停止模式会关闭时钟源!

待机模式

待机模式配置

	RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);  //使能电源PWR时钟PWR_WakeUpPinCmd(ENABLE);//WKUP唤醒功能开启(待机时WKUP脚PA0为模拟输入)

使能唤醒脚

进入待机模式

PWR_EnterSTANDBYMode();//进入待机模式

PWR_EnterSTANDBYMode库函数定义位

退出待机模式

wakeup管脚退出

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

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

相关文章

uniapp 使用v-html在微信小程序中渲染成rich-text如何显示文本溢出省略

一、问题描述 小伙伴有个需求,想在uniapp开发的微信小程序的一个列表中对内容进行显示溢出显示省略号的控制:当文本超出一行之后,显示…。 经过尝试,无法在v-html所在的节点进行ellipise的控制。 二、解决方案 1.增加函数&…

VMware 17 安装 VMTools(win 7旗舰 X64)

由于在VM 17中安装的 win 7虚拟机没有安装VM Tools 的原因,界面有大黑边,也无法直接拖拽复制粘贴文件(但是如果只是要复制文件,最简单的方法还是使用U盘),所以下面开始安装VM Tools 。 若直接选择VM软件中的…

【MySQL】我在广州学Mysql 系列——Mysql 日志管理详解

ℹ️大家好,我是练小杰,今天又是新的一周了,又该摆好心态迎接美好的明天了!!!😆 本文主要对Mysql数据库中的日志种类以及基本命令进行讨论!! 回顾:&#x1f4…

python学opencv|读取图像(六十五)使用cv2.boundingRect()函数实现图像轮廓矩形标注

【1】引言 前序学习进程中,已经使用cv2.findContours()函数cv2.drawContours()函数实现图像轮廓识别和标注,这种标注沿着图像的轮廓进行,比较细致。相关文章链接为: python学opencv|读取图像(六十四)使用…

DeepSeek-V3 技术报告

DeepSeek-V3 Technical Report https://arxiv.org/abs/2412.19437 1. 核心贡献 DeepSeek-V3 是一个拥有 6710 亿参数的大规模混合专家(MoE)语言模型,每个 token 激活 370 亿参数。 该模型通过创新的架构设计和训练策略,实现了高效…

PCIe7.0信号完整性优化的一些方向

首先考虑过孔stub的影响,分别仿真10mil stub,6mil stub,3mil stub以及无stub四种情况,观察insertion loss/ return loss/TDR Impedance profile、crosstalk四个参数对比情况。 仿真对比结果如下: 其次,考虑…

学习threejs,使用PointLight点光源

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.PointLight 二、&…

30填学习自制操作系统第二天

今天要干什么? 初步了解汇编语言使用汇编重新写个昨天的镜像文件继续开发 一: 什么是电信号? 电脑的处理中心是CPU,即“central process unit”的缩写,翻译成中文就是“中央处理单元”,顾名思义,他就是…

Python的顺序结构和循环结构

文章目录 一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(c)多分支 if-elif-elif-...-else (3)注意事…

金蝶云星空点击按钮实现指定文件下载

文章目录 金蝶云星空点击按钮实现指定文件下载业务需求开发实现 金蝶云星空点击按钮实现指定文件下载 业务需求 点击按钮,下载excel 开发实现 创建表单插件,在按钮点击事件,调用附件下载窗口进行指定路径的指定文件下载 模板存放路径 …

EasyExcel的简单使用

EasyExcel使用 官方文档&#xff1a;关于EasyExcel 1.1EasyExcel相关依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.11</version></dependency> 1.2 写Excel 1.2.1 最…

游戏引擎学习第107天

仓库:https://gitee.com/mrxiao_com/2d_game_2 回顾我们之前停留的位置 在这段内容中&#xff0c;讨论了如何处理游戏中的三维效果&#xff0c;特别是如何处理额外的“Z层”。由于游戏中的艺术资源是位图而不是3D模型&#xff0c;因此实现三维效果变得非常具有挑战性。虽然可…

「vue3-element-admin」基于 TypeScript 的 ECharts 按需引入方案实战 - Vue3 项目打包体积优化 57%

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …

用Python实现图像风格迁移的技术分析

文章目录 一、概要 二、效果预览 三、整体架构流程 1. 用户界面(GUI): 2. 图像加载与显示: 3. 风格迁移核心算法: 4. 结果显示与保存: 5. 多线程处理: 四、技术名词解释 1. OpenCV: 2. TensorFlow: 3. VGG19: 4. GUI(图形用户界面): 5. 多线程: 五…

gsoap实现webservice服务

gsoap实现webservice服务 在实现Web服务时&#xff0c;使用gSOAP是一个很好的选择&#xff0c;因为它提供了强大的工具和库来创建SOAP和RESTful服务。gSOAP是一个C和C语言开发的库&#xff0c;它支持SOAP协议的各种版本&#xff0c;包括SOAP 1.1和SOAP 1.2。下面是如何使用gSO…

穷举 vs 暴搜 vs 深搜 vs 回溯 vs 剪枝

穷举 vs 暴搜 vs 深搜 vs 回溯 vs 剪枝 1. 全排列2. 子集 1. 全排列 题目链接&#xff1a;46. 全排列 算法原理&#xff1a; 画出决策树 设计函数 全局变量&#xff1a;二维数组ret存储结果&#xff1b;一维数组path存储路径&#xff1b;boolean类型一维数组visited表示当…

NAT(网络地址转换)技术详解:网络安全渗透测试中的关键应用与防御策略

目录 NAT的作用 NAT类型 NAT工作流程示例 NAT 转换技术的原理 源地址转换&#xff08;SNAT&#xff0c;Source NAT&#xff09;&#xff1a; 目标地址转换&#xff08;DNAT&#xff0c;Destination NAT&#xff09;&#xff1a; 端口地址转换&#xff08;PAT&#xff0c…

OpenCV图像基本操作

学习目标&#xff1a; 学习一些OpenCV中对于图像的基本操作 学习内容&#xff1a; 第一步导入库和所需的图像。 import cv2 import numpy as np imgcv2.imread("lena.png") # cv2.imshow("img",img) # cv2.waitKey(0) 访问和修改图片像素 访问图片像素…

具身智能在智能巡检机器人中的应用——以开关柜带电操作机器人为例

随着机器人技术和人工智能的迅速发展&#xff0c;具身智能在各行业的应用日益广泛&#xff0c;尤其是在电力行业中的智能巡检领域。传统的电力巡检和维护工作通常需要人工操作&#xff0c;存在着高温、高压、强电磁场等危险环境&#xff0c;且效率较低。开关柜带电操作机器人作…

巨控GRM530系列的远程模块用于PLC远程上下载方案

巨控GRM530系列的远程模块用于PLC远程上下载方案 一、方案概述 巨控科技基于全球加速服务器与智能通讯模块&#xff0c;提供高效、安全的工业设备远程上下载及维护服务。支持多协议PLC、触摸屏、运动控制器等设备&#xff0c;突破地域限制&#xff0c;实现跨国、跨网络的无缝调…