STM32 低功耗模式

news2025/2/21 10:22:40

目录

背景

低功耗模式

睡眠模式

进入睡眠模式

退出睡眠模式

停止模式

进入停止模式

退出停止模式

待机模式

进入待机模式

退出待机模式

程序

睡眠模式

休眠模式配置

进入休眠模式

退出睡眠模式

停止模式

停止模式配置

进入停止模式

退出停止模式

待机模式

待机模式配置

进入待机模式

退出待机模式


背景

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.coloradmin.cn/o/2300890.html

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

相关文章

网络安全架构战略 网络安全体系结构

本节书摘来自异步社区《网络安全体系结构》一书中的第1章,第1.4节,作者【美】Sean Convery 1.4 一切皆为目标 网络安全体系结构 当前的大型网络存在着惊人的相互依赖性,作为一名网络安全设计师,对这一点必须心知肚明。Internet就…

【算法】回溯算法

回溯算法 什么是回溯 人生无时不在选择。在选择的路口,你该如何抉择 ..... 回溯: 是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标&am…

Centos安装php-8.0.24.tar

查看系统环境 cat /etc/redhat-release 预先安装必要的依赖 yum install -y \ wget \ gcc \ gcc-c \ autoconf \ automake \ libtool \ make \ libxml2 \ libxml2-devel \ openssl \ openssl-devel \ sqlite-devel yum update 1、下载解压 cd /data/ wget https:/…

机器学习(李宏毅)——RNN

一、前言 本文章作为学习2023年《李宏毅机器学习课程》的笔记,感谢台湾大学李宏毅教授的课程,respect!!! 二、大纲 引例RNN历史基本思想RNN变形RNN训练 三、引例 学习RNN之前先看一个例子: 假设要做一…

Linux 文件系统inode软硬链接

目录 一、理解文件系统 1、前言 2、磁盘 二、inode 1、创建一个新文件的 4 个操作 三、软硬链接 1、软链接 2、硬链接 3、硬链接的应用 4、软链接的应用 一、理解文件系统 1、前言 在我们电脑文件里,分为打开的文件和未打开的文件,我们在上…

多目标粒子群优化算法-MOPSO-(机器人路径规划/多目标信号处理(图像/音频))

具体完整算法请跳转:多目标粒子群优化算法-MOPSO-(机器人路径规划/多目标信号处理(图像/音频)) 多目标粒子群优化算法(Multi-Objective Particle Swarm Optimization,MOPSO)是一种基…

Unity合批处理优化内存序列帧播放动画

Unity合批处理序列帧优化内存 介绍图片导入到Unity中的处理Unity中图片设置处理Unity中图片裁剪 创建序列帧动画总结 介绍 这里是针对Unity序列帧动画的优化内容,将多个图片合批处理然后为了降低Unity的内存占用,但是相对的质量也会稍微降低。可自行进行…

DAY07 Collection、Iterator、泛型、数据结构

学习目标 能够说出集合与数组的区别数组:1.是引用数据类型的一种2.可以存储多个元素3.数组的长度是固定的 int[] arr1 new int[10]; int[] arr2 {1,2,3};4.数组即可以存储基本类型的数据,又可以存储引用数据类型的数据int[],double[],String[],Student[]集合:1.是引用数据类…

k8s集群如何赋权普通用户仅管理指定命名空间资源

文章目录 1. 普通用户2. 创建私钥3. 创建 CertificateSigningRequest4. 批准 CertificateSigningRequest5. 创建 kubeconfig6. 创建角色和角色绑定7. 测试 1. 普通用户 创建用户demo useradd demo2. 创建私钥 下面的脚本展示了如何生成 PKI 私钥和 CSR。 设置 CSR 的 CN 和 …

DeepSeek与ChatGPT的全面对比

在人工智能(AI)领域,生成式预训练模型(GPT)已成为推动技术革新的核心力量。OpenAI的ChatGPT自发布以来,凭借其卓越的自然语言处理能力,迅速占据市场主导地位。然而,近期中国AI初创公…

超全Deepseek资料包,deepseek下载安装部署提示词及本地部署指南介绍

该资料包涵盖了DeepSeek模型的下载、安装、部署以及本地运行的详细指南,适合希望在本地环境中高效运行DeepSeek模型的用户。资料包不仅包括基础的安装步骤,还提供了68G多套独立部署视频教程教程,针对不同硬件配置的模型选择建议,以…

DeepSeek24小时写作机器人,持续创作高质量文案

内容创作已成为企业、自媒体和创作者的核心竞争力。面对海量的内容需求,人工创作效率低、成本高、质量参差不齐等问题日益凸显。如何在有限时间内产出高质量内容?DeepSeek写作机器人,一款24小时持续创作的智能工具,为企业和个人提…

用deepseek学大模型08-卷积神经网络(CNN)

yuanbao.tencent.com 从入门到精通卷积神经网络(CNN),着重介绍的目标函数,损失函数,梯度下降 标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据,预测结果的可视化展示, 模型应用场景和优缺点&#xf…

【OpenCV】入门教学

🏠大家好,我是Yui_💬 🍑如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 🚀如有不懂,可以随时向我提问,我会全力讲解~ &#x1f52…

嵌入式 lwip http server makefsdata

背景: 基于君正X2000 MCU Freertoslwip架构 实现HTTP server服务,MCU作为HTTP服务器通过网口进行数据包的传输,提供网页服务。其中设计到LWIP提供的工具makefsdata,常用于将文件或目录结构转换为适合嵌入到固件中的二进制格式。 …

qemu-kvm源码解析-cpu虚拟化

背景 Qemu 虚拟化中,CPU,内存,中断是虚拟化的核心板块。本章主要对CPU虚拟化源码进行分析 而随着技术的发展包括CPU、内存、网卡等常见外设。硬件层面的虚拟化现在已经是云计算的标配。形成了,qemu作为cpu外层控制面&#xff0c…

数据治理中 大数据处理一般都遵循哪些原则

在数据治理中,大数据处理通常遵循以下原则: 最小化原则:企业应只收集实现特定目的所需的数据,避免数据冗余和安全风险。 合法性原则:企业必须遵守相关法律法规,确保数据处理符合法律要求,降低法…

【Python pro】基本数据类型

一、数字类型 1.1 数字类型的组成 1.1.1 整数 (1)十进制,二进制0b,八进制0o,十六进制0x print(16 0b10000 0o20 0x10) # 输出:True(2)十进制转其他进制 a bin(16) b oct(1…

sql server查询IO消耗大的排查sql诊断语句

原文链接: sql server查询IO消耗大的排查sql诊断语句-S3软件[code]select top 50 (total_logical_reads/execution_count) as avg_logical_reads , (total_logical_writes/execution_count) as avg_logical_writes , (tota ... https://blog.s3.sh.cn/thread-120-1…

kubernetes源码分析 kubelet

简介 从官方的架构图中很容易就能找到 kubelet 执行 kubelet -h 看到 kubelet 的功能介绍: kubelet 是每个 Node 节点上都运行的主要“节点代理”。使用如下的一个向 apiserver 注册 Node 节点:主机的 hostname;覆盖 host 的参数&#xff1…