STM32 低功耗-待机模式
STM32 待机模式
文章目录
- STM32 待机模式
- 第1章 低功耗模式简介
- 第2章 待机模式简介
- 2.1 进入待机模式
- 2.1 退出待机模式
- 第3章 待机模式代码部分
- 总结
第1章 低功耗模式简介
在 STM32 的正常工作中,具有四种工作模式:运行、睡眠、停止和待机模式。
在系统或电源复位以后,微控制器处于运行状态,当CPU不需继续运行时,可以利用多种低功耗模式来节省功耗。这些低功耗模式电源消耗不同、唤醒时间不同和唤醒源不同。
例如等待某个外部事件时,用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,所以需要根据自身的需要选定一个最佳的低功耗模式。
STM32F1有三种低功耗模式:
1、睡眠模式(Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行)。
2、停止模式(所有的时钟都已停止)。
3、待机模式(1.8V电源关闭)。
各种低功耗模式的对比如下表:

说明:
WFI和WFE都是系统指令,WFI是表示中断,WFE表示事件。
第2章 待机模式简介
待机模式下的输入/输出端口状态:
在待机模式下,所有的I/O引脚处于高阻态,除了以下的引脚:
1、复位引脚(始终有效)。
2、当被设置为防侵入或校准输出时的TAMPER引脚。
3、被使能的唤醒引脚。
待机模式可实现系统的最低功耗。该模式是在Cortex M3深睡眠模式时关闭电压调节器。整个1.8V供电区域被断电。PLL、HSI和HSE振荡器也被断电。SRAM和寄存器内容丢失,只有备份的寄存器和待机电路维持供电。
2.1 进入待机模式
可以通过设置独立的控制位,选择以下待机模式的功能:
1、 独立看门狗(IWDG):可通过写入看门狗的键寄存器或硬件选择来启动IWDG。一旦启动了独立看门狗,除了系统复位,它不能再被停止。
2、 实时时钟(RTC):通过备用区域控制寄存器(RCC_BDCR)的RTCEN位来设置。
3、 内部RC振荡器(LSI RC):通过控制/状态寄存器(RCC_CSR)的LSION位来设置。
4、 外部32.768kHz振荡器(LSE):通过备用区域控制寄存器(RCC_BDCR)的LSEON位设置。
2.1 退出待机模式
当一个外部复位(NRST引脚)、IWDG复位、WKUP引脚上的上升沿或RTC闹钟事件的上升沿发生时,微控制器从待机模式退出。
从待机唤醒后,除了电源控制/状态寄存器(PWR_CSR),所有寄存器被复位。
从待机模式唤醒后的代码执行等同于复位后的执行(采样启动模式引脚、读取复位向量等)。电源控制/状态寄存器(PWR_CSR)将会指示内核由待机状态退出。
如何进入和退出待机模式,细节参考如下表:

第3章 待机模式代码部分
示例代码如下:
void EXTI0_IRQHandler(void)
{delay_ms(20); /* 延时消抖 */if(EXTI_GetFlagStatus(EXTI_Line0) == SET){printf("进入待机模式\r\n"); if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 1)//PA0引脚触发高电平{RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);PWR_WakeUpPinCmd(ENABLE);//使能WKUP引脚的唤醒功能PWR_EnterSTANDBYMode();//进入待机模式}}EXTI_ClearITPendingBit(EXTI_Line0);/* 清除LINE0上的中断标志位 */
}
中断引脚唤醒代码部分(略)
和前面退出睡眠模式的代码一样,可以移步到睡眠模式文章参考即可。
总结
1、待机模式可实现系统的最低功耗,在睡眠模式和停止模式基础上更加节省能耗。
2、在调试模式默认情况下,如果在进行调试微处理器时,使微处理器进入停止或待机模式,将失去调试连接。所以需要退出这些低功耗模式后才可以进行程序调试和下载,否则是无法进行连接的。
3、可以利用待机模式达到最低功耗这一特性来实现降低一些产品的功耗,按键按下唤醒工作,再按下时就进入待机,避免不使用系统时的能量损耗,类似于现在的手机开关机等。
特别提醒:
以上的几篇文章都没有做寄存器的介绍,若需要了解,可以到芯片(中文)参考手册进行查阅学习。
睡眠模式文章
停止模式文章
相关文章:
STM32 低功耗-待机模式
STM32 待机模式 文章目录 STM32 待机模式第1章 低功耗模式简介第2章 待机模式简介2.1 进入待机模式2.1 退出待机模式 第3章 待机模式代码部分总结 第1章 低功耗模式简介 在 STM32 的正常工作中,具有四种工作模式:运行、睡眠、停止和待机模式。 在系统或…...
极海APM32F003F6P6烧写问题解决记录
工作中遇到的,折腾了好久,因为电脑重装过一遍系统,软件也都重新安装了,所以不知道之前的配置是什么,旧项目代码编译没问题,烧写时疯狂报错,用的是JLink。 keil版本v5.14 win10版本 JLink版本…...
【大数据】Flink 详解(一):基础篇
Flink 详解(一):基础篇 1、什么是 Flink ? Flink 是一个以 流 为核心的高可用、高性能的分布式计算引擎。具备 流批一体,高吞吐、低延迟,容错能力,大规模复杂计算等特点,在数据流上提…...
ChatGPT 作为 Python 编程助手
推荐:使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 简单的数据处理脚本 我认为一个好的起点是某种数据处理脚本。由于我打算让 ChatGPT 之后使用各种 Python 库编写一些机器学习脚本,这似乎是一个合理的起点。 目标 首先,我想尝试…...
饿了么输入框限制只能输入数字,并且保留小数
可以使用饿了么ui中的input-number组件实现输入框只能输入数字,这样就不能输入数字以外的,controls隐藏输入框左右俩边的加减按钮,precision小数点保留多少位,2则是俩位,但是会导致默认值为0.00的情况,俩种…...
kylin-Desktop gsettings 获取或设置系统配置
gsettings提供了对GSetings的命令行操作。GSetings实际上是一套高级API,用来操作dconf。 dconf存储着GNOME3的配置,是二进制格式。它做为GSettings的后端系统存在,暴露出低级API。在GNOME2时代,类似的角色是gconf,但它是以XML文本形式存储。 更接地气的说法是,dconf是G…...
setmap使用
目录 set使用 set的模板参数 构造函数 成员函数 insert iterator 编辑 find count pair pair 的模板参数 make_pair multiset使用 multiset 的模板参数 set 与 multiset 的区别 count map使用 map 的模板参数 构造函数 insert iterator find 编辑 cou…...
Python3 网络爬虫开发实战
JavaScript逆向爬虫 JavaScript接口加密技术,JavaScript有以下两个特点: JS代码运行在客户端,所以它必须在用户浏览器加载并运行JS代码公开透明,所以浏览器可以直接获取到正在运行的JS源码。 所以JS代码不安全,任何…...
docker: CMD和ENTRYPOINT的区别
ENTRYPOINT: 容器的执行命令(属于正统命令) 可以使用--build-arg ENVIROMENTintegration参数覆盖 ocker build --build-arg ENVIROMENTintegration 两者同时存在时 CMD作为ENTRYPOINT的默认参数使用外部提供参数会覆盖CMD提供的参数。 CMD单…...
DC电源模块对于定制的要求主要有这几点
BOSHIDA DC电源模块对于定制的要求主要有这几点 DC电源模块是一种将交流电转换成为稳定的直流电的装置。在现代工业生产中,DC电源模块被广泛应用于各种电子设备中,例如计算机、手机、电视等。为了满足不同用户需求,DC电源模块的定制需求也是…...
Kubernetes高可用集群二进制部署(六)Kubernetes集群节点添加
Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署(二)ETCD集群部署 Kubernetes高可用集群二进制部署(三)部署…...
网关 GateWay 的使用详解、路由、过滤器、跨域配置
一、网关的基本概念 SpringCloudGateway网关是所有微服务的统一入口。 1.1 它的主要作用是: 反向代理(请求的转发) 路由和负载均衡 身份认证和权限控制 对请求限流 1.2 相比于Zuul的优势: SpringCloudGateway基于Spring5中…...
vsocde里面远程连接服务器报could not esatablish connection xxxx
我在vscode里面远程连接服务器编辑代码时,正常我按F1选择了服务器IP地址,然后让我选在Linux,然后我再输入服务器密码,但是当我选择Linux系统之后直接没出让我输入服务器密码的输入框,而是直接报错 could not esatablis…...
Hi3798MV200 恩兔N2 NS-1 (二): HiNAS海纳思使用和修改
目录 Hi3798MV200 恩兔N2 NS-1 (一): 设备介绍和刷机说明Hi3798MV200 恩兔N2 NS-1 (二): HiNAS海纳思使用和修改Hi3798MV200 恩兔N2 NS-1 (三): 制作 Ubuntu rootfsHi3798MV200 恩兔N2 NS-1 (四): 制作 Debian rootfs 关于 海纳思全称是海思机顶盒NAS系统, 网站 https://www…...
无涯教程-Perl - foreach 语句函数
foreach 循环遍历列表值,并将控制变量(var)依次设置为列表的每个元素- foreach - 语法 Perl编程语言中的 foreach 循环的语法是- foreach var (list) { ... } foreach - 流程图 foreach - 示例 #!/usr/local/bin/perllist(2, 20, 30, 40, 50);# foreach loop ex…...
easyWechat 5.x 复写代码 获取企业微信授权用户敏感信息
复写 (new SocialiteManager($config))->extend(wework, function ($config) {return new \App\Extend\EasyWechat\Work\WeWork($config);});创建的 \App\Extend\EasyWechat\Work\WeWork是我们需要复写的类 <?phpnamespace App\Extend\EasyWechat\Work;use Overtrue\So…...
医疗器械研发中的可用性工程实践(一)
致读者:以前看《楚门的世界》,《蝴蝶效应》,《肖申克的救赎》,《教父》,《横道世之介》,《老友记》,一个人的一生匆匆。作为平凡人就是历史大河中的浪花,顺势而为,起起伏…...
LNMP搭建
LNMP:目前成熟的企业网站的应用模式之一,指的是一套协同工作的系统和相关软件 能够提供静态页面服务,也可以提供动态web服务。 这是一个缩写 L linux系统,操作系统。 N nginx网站服务,也可也理解为前端,…...
软件测试分类总结
目录 1.根据源代码可见度划分 1.1黑盒测试 1.2白盒测试 1.3灰盒测试 2.根据开发阶段划分 2.1单元测试 2.2集成测试 2.3系统测试 2.4验收测试 3.按照实施组织划分 3.1α测试 3.2β测试 3.3第三方测试 4.按照是否运行程序划分 4.1静态测试 4.2动态测试 5.根据软件测试工作的…...
模糊PID(三角隶属度函数模糊化CODESYS ST代码)
三角隶属度函数的详细算法介绍,之前的专栏有详细介绍,这里不再展开讨论。相关文章链接如下: 博途三角隶属度函数FC 博途PLC模糊PID三角隶属度函数指令(含Matlab仿真)_博图模糊pid控制_RXXW_Dor的博客-CSDN博客三角隶属度函数FC,我们采用兼容C99标准的函数返回值写法,在…...
Slowloris安装与部署:从源码到生产环境的完整流程
Slowloris安装与部署:从源码到生产环境的完整流程 【免费下载链接】slowloris Low bandwidth DoS tool. Slowloris rewrite in Python. 项目地址: https://gitcode.com/gh_mirrors/sl/slowloris Slowloris是一款基于Python的低带宽DoS(拒绝服务&a…...
费马小定理,快速幂
今天显示延续了昨天的背包问题,先是写了一题背包问题,后面就写费马定理加快速幂。费马小定理证明如果一个数p是质数,并且a不是p的倍数,那么一定有a^(p-1)1(mod p);那么自然有a^(p-2)a^-1(mod p)…...
OpenClaw资源监控:Phi-3-vision-128k-instruct长任务运行状态实时追踪
OpenClaw资源监控:Phi-3-vision-128k-instruct长任务运行状态实时追踪 1. 为什么需要监控OpenClaw长任务 上周我在本地运行一个长达6小时的OpenClaw自动化流程时,遇到了令人头疼的问题——凌晨3点任务突然中断,第二天检查才发现是GPU内存耗…...
高压电源软启动:从浪涌抑制到系统可靠性的工程实践
1. 高压电源软启动的必要性 第一次见到整流二极管炸裂的场景,至今记忆犹新。那是在一个工业电源调试现场,工程师刚合上电闸就听到"啪"的一声脆响,随后便闻到焦糊味——价值数百元的整流模块瞬间报废。罪魁祸首就是电容滤波电路带来…...
AI 赋能自动化测试实战:从用例生成到 CI/CD 全流程落地
文章目录一、前言二、AI 赋能自动化测试的 5 大核心能力1. 智能测试用例生成2. 智能元素定位与脚本自愈3. 智能执行与异常自适应4. 智能缺陷检测与根因定位5. 测试用例库智能维护三、落地路径:0 到 1 搭建 AI 自动化测试体系阶段 1:工具选型与环境搭建&a…...
避坑指南:在Ubuntu 22.04上为Autoware配置Docker与NVIDIA GPU支持(含代理与镜像源配置)
深度避坑:Ubuntu 22.04下Autoware与Docker的GPU实战配置全解 当你在深夜的终端前反复输入docker run --gpus all却只收获冰冷的错误提示时,这种挫败感我深有体会。本文不是又一份标准安装教程,而是从17次失败尝试中提炼出的生存手册ÿ…...
信号处理基础:时域与频域分析详解
1. 信号分析的双重视角:时域与频域 作为一名在信号处理领域工作多年的工程师,我经常需要向新人解释时域和频域的关系。简单来说,时域就像观察一个人的日常行为记录,而频域则像是给这个人做了一次全面的体检报告。两者描述的是同一…...
云原生应用的性能测试与优化
云原生应用的性能测试与优化 🔥 硬核开场 各位技术老铁,今天咱们聊聊云原生应用的性能测试与优化。别跟我扯那些理论,直接上干货!在云原生时代,性能是用户体验的关键,也是系统可靠性的保障。不搞性能测试与…...
2026届必备的AI科研平台实际效果
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当前学术写作场景中,AI辅助平台已广泛应用。因经过综合评估,所以以下…...
深度学习模型压缩:从理论到实践
深度学习模型压缩:从理论到实践 1. 背景与意义 深度学习模型在取得显著性能提升的同时,也带来了模型规模的急剧增长。大型模型往往需要大量的计算资源和内存,这限制了它们在资源受限设备上的部署。模型压缩技术的意义在于: 减少模…...
