STM32 低功耗模式 睡眠、停止和待机 详解

目录

1.睡眠模式(Sleep Mode)

2.停止模式(stop mode)

3.待机模式(Standby Mode)


STM32提供了三种低功耗模式,分别是睡眠模式(Sleep Mode)、停止模式(Stop Mode)和待机模式(Standby Mode),我们在做一些电池供电项目的时候,低功耗模式显得尤为重要。

模式名称进入唤醒唤醒后位置对 1.2V域时钟的影响对 VDD 域时钟的影响功耗
睡眠模式WFI任意中断睡眠位置开始执行CPU/CLK 关闭对其它时钟或模拟时钟源无影响偏高
WFE唤醒事件
停止模式PDDS 和LPDS 位+SLEEPDEEP 位+WFI或 WFE任意 EXTI 线(在 EXTI寄存器中配置,内部线和外部线)停止位置开始执行,但系统时钟变为HSI(内部高速时钟),需要重新配置时钟所有 1.2 V域时钟都关闭HSI 和HSE 振荡器关闭中等
待机模式PDDS 位+SLEEPDEEP 位+ WFI 或 WFEWKUP 引脚上升沿、RTC闹钟(钟 A 或闹钟B)、BTC 唤醒事件、RTC 入侵事件、RTC 时间戳事件、NRST 引脚外部复位、IWDG 复位相当于复位,系统重新开始运行所有 1.2 V域时钟都关闭HSI 和HSE 振荡器关闭最低

1.睡眠模式(Sleep Mode)

睡眠模式下,只有STM32的内核时钟被关闭,而外设时钟仍然保持运行,所有的I/O引脚都保持它们在运行模式时的状态,WFI模式下可以通过任意中断唤醒,WFE模式下可以任意唤醒事件唤醒,唤醒后程序继续睡眠位置往下运行。

void enter_sleep_mode(void){HAL_SuspendTick();//关闭系统systick中断,防止睡眠被systick中断打断HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);//进入WFI睡眠模式HAL_ResumeTick();//打开系统systic中断
}

上面是进入睡眠模式的代码,因为系统存在1ms一次的systick,所以要将其手动关闭,等待睡眠模式被唤醒以后再恢复。

2.停止模式(stop mode)

停止模式下,内核时钟和外设时钟都被关闭,但内核的1.8V供电区域仍然保持供电,SRAM和寄存器中的内容得以保留,IO口状态也可保持,可以通过任意一个外部中断来唤醒STM32,唤醒后需要重新初始化时钟和外设,当一个中断或唤醒事件导致退出停止模式时,HSI(高速内部时钟)通常被选为系统时钟。

void enter_stop_mode(void){HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1);//禁用唤醒引脚__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);//清除唤醒标志HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);//启用唤醒引脚HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);//进入停止模式
}

 进入停止模式之前先要重置一下唤醒引脚,注意停止模式结束以后,外设时钟被关闭,只能选用HSI重新初始化时钟和外设。

3.待机模式(Standby Mode)

待机模式是功耗最低的模式,关闭了所有的时钟,并关闭了内核的1.8V供电,除了电源控制/状态寄存器和备份寄存器之外,其他所有的寄存器和RAM数据都会丢失,可以通过唤醒引脚(如PA0)的上升沿、RTC(实时时钟)闹钟中断,或者复位操作来唤醒STM32,唤醒后,STM32相当于复位,程序将从复位地址开始执行。

由于待机模式被唤醒后相当于复位,从main函数重新初始化,所以不用再做特殊操作。

大家可以根据自己的项目需求去选择合适的低功耗模式。

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

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

相关文章

MYSQL八股文汇总

目录 1、三大范式 2、DML 语句和 DDL 语句区别 3、主键和外键的区别 4、drop、delete、truncate 区别 5、基础架构 6、MyISAM 和 InnoDB 有什么区别? 7、推荐自增id作为主键问题 8、为什么 MySQL 的自增主键不连续 9、redo log 是做什么的? 10、redo log…

App H5+ 实现下载、查看功能 前后端实现(SpringBoot)

<!doctype html><html><head><meta charset"utf-8"><title>维修指南</title><meta name"viewport" content"widthdevice-width, initial-scale1.0, minimum-scale0, maximum-scale0.85, user-scalableyes&quo…

下半年交火点:智驾全国都能开,智舱多模态大模型

“你猜一猜我现在参加什么样的活动呢&#xff1f;” “你参加的是WAIC&#xff0c;就是那个人工智能的大Party&#xff0c;超多科技高手都在这……” “你帮我介绍一下这本书吧。” “这书叫《反脆弱&#xff0c;从不确定性中获益》&#xff0c;讲的是怎么在混乱里找机会&am…

搞不清啊?伦敦金与上海金区别是?

进入黄金市场的朋友&#xff0c;有可能会被各式各样的黄金交易品种带得眼花缭乱&#xff0c;其实各品种虽然都以黄金作为投资标的物&#xff0c;但是也是各有不同的&#xff0c;下面我们就来比较一下相似的投资品种——伦敦金和上海金。 首先在比较之前&#xff0c;我们要搞清楚…

基于泰坦尼克号生还数据进行 Spark 分析

基于泰坦尼克号生还数据进行 Spark 分析 在这篇博客中&#xff0c;我们将展示如何使用 Apache Spark 分析著名的泰坦尼克号数据集。通过这篇教程&#xff0c;您将学习如何处理数据、分析乘客的生还情况&#xff0c;并生成有价值的统计信息。 数据解析 • PassengerId &#…

快速排序[原理,C++实现,注意事项,时间复杂度分析]

模板&#xff1a; //本模板来自ACwing void quick_sort(int q[],int l,int r) {if(l>r) return;int xq[lr>>1],il-1,jr1;while(i<j){do i;while(q[i]<x);do j--;while(q[j]>x); if(i<j) swap(q[i],q[j]);}quick_sort(q,l,j);quick_sort(q,j1,r); };原理&…

注册中心组成结构和基本原理解析

假如你正在设计和开发一个分布式服务系统&#xff0c;系统中存在一批能够独立运行的服务&#xff0c;而在部署上也采用了集群模式以防止出现单点故障。显然&#xff0c;对于一个完整的业务系统而言&#xff0c;这些服务之间需要相互调用并形成复杂的访问链路&#xff0c;一种可…

codesys多段直线电机跨电机控制

1. 电机描述 在X轴上有多段直线电机&#xff0c;如下图有9个&#xff0c;从X1到X9. 2.codesys程序结构 程序名称&#xff1a;Pou_two_motors 动作名称&#xff1a;ACT_move 把这个程序搞到任务配置里面 通过ethercat总线命名一下这些电机&#xff0c;方便调用。 3.程序内容 P…

油烟监测仪:守护厨房,让蓝天白云成为常态

夏日炎炎&#xff0c;白天的酷暑让人们更加向往夜晚的凉爽与惬意。在这样的季节里&#xff0c;品尝各式烧烤、小龙虾&#xff0c;再搭配一杯冰镇啤酒&#xff0c;成为了许多市民夜晚消遣的不二选择。然而&#xff0c;随之而来的餐饮油烟问题也进入了高发阶段&#xff0c;对周边…

智能锁赛博化,凯迪仕携全球顶尖科技亮相建博会!

7月8日&#xff0c;作为大家居建材行业全球规模第一大展&#xff0c;2024中国建博会&#xff08;广州&#xff09;在广交会展馆正式拉开序幕。据官方数据显示&#xff0c;本届展会展出规模展览总规模近40万平方米&#xff0c;建筑装饰领域各细分题材的一线品牌几乎全部参展。 其…

循环练习题

思路&#xff1a; 代码&#xff1a; public static void main(String[] args) {double sum0;for (int i1;i<100;i){if (i%2!0){sum1.0/i;}else {sum-1.0/i;}}System.out.println(sum);} 结果为&#xff1a;

vscode取消未使用变量的提示(爆红)

目前项目正在使用ts&#xff08;TypeScript&#xff09;&#xff0c;可以在 tsconfig.json 文件中调整编译选项 在你的项目中找到并打开 tsconfig.json 文件&#xff0c;将noUnusedLocals和noUnusedParameters设置为false&#xff0c;关闭vscode重新打开项目即可 {"comp…

Mysql 高性能索引

引言 索引是一种用于快速查询和检索数据的数据结构&#xff0c;其本质可以看成是一种排序好的数据结构。 常见的索引类型包括B-Tree索引、哈希索引、空间数据索引&#xff08;R-Tree&#xff09;、全文索引。 索引的类型 在MySQL中&#xff0c;索引是在 存储引擎层 而不是服…

井字游戏00

题目链接 井字游戏 题目描述 注意点 1 < board.length board[i].length < 100输入一定遵循井字棋规则 解答思路 如果某一方想要获胜&#xff0c;则其需要占满某一行或某一列或对角线&#xff0c;所以只需要根据第一行和第一列判断是否填充完某一行或某一列或对角线…

EHS管理体系,重塑造企业竞争力的关键密码

在当今这个快速发展的时代&#xff0c;企业面临着前所未有的挑战与机遇。随着全球环保意识的普遍觉醒&#xff0c;以及社会各界对企业社会责任的日益关注&#xff0c;EHS&#xff08;环境&#xff0c;健康&#xff0c;安全&#xff09;管理体系成为了企业稳健前行的重要基石。它…

设计模式之Facade设计模式

Facade设计模式&#xff0c;也称为外观模式&#xff0c;是一种结构型设计模式&#xff0c;它主要用于为子系统中的一组接口提供一个统一的高层接口&#xff0c;从而使得子系统更加容易使用。以下是关于Facade设计模式的详细介绍&#xff1a; 一、定义 Facade模式为多个复杂的…

一款强大且免费开源的多连接数据库管理工具

大家好&#xff0c;今天给大家分享一款免费开源的跨平台数据库管理工具DbGate。 DbGate是一款免费开源的跨平台数据库管理工具&#xff0c;支持多种数据库&#xff0c;包括MySQL、PostgreSQL、SQL Server、MongoDB、SQLite等。它可以在Windows、Linux、Mac操作系统上运行&#…

【概念介绍】Signed Distance Function(SDF)

三维空间的表示形式可以分为显式和隐式 显式&#xff1a; 体素Voxel&#xff0c;点云Point Cloud&#xff0c;三角面片Mesh隐式&#xff1a;符号距离函数Signed Distance Funciton(SDF)&#xff0c;占用场Occupancy Field&#xff0c;神经辐射场Neural Radiance Field&#xff…

MAC在网络结构中的位置:深入解析

MAC在网络结构中的位置&#xff1a;深入解析 在网络通信的世界里&#xff0c;每一层都扮演着至关重要的角色。今天&#xff0c;我们将聚焦于一个经常被提到但可能不太被理解的概念&#xff1a;MAC&#xff08;Media Access Control&#xff0c;媒体访问控制&#xff09;。我们…

命名空间namespace--c++入门基础等

个人主页点这里~ 1.命名空间-namespace 简介 &#xff1a;在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化&#xf…