STM32-低功耗模式详解

news2024/11/16 1:40:33

一、概述

        低功耗模式(Low Power Mode)是为了减少电子设备的能耗而设计的操作模式,广泛应用于依赖电池供电的设备中,旨在延长电池寿命或减少能源消耗。在用户需要设备长时间工作或在电量极为有限的情况下非常实用,虽然牺牲了一定的性能和便利性,但却能有效延长设备的使用时间。

二、常见低功耗模式

在STM32微控制器中,常见的低功耗模式包括:

  1. 睡眠模式 (Sleep Mode):在睡眠模式下,CPU暂停执行,并且大多数外设也会停止工作,只有时钟和必要的外设保持运行,以便在唤醒后快速恢复操作。

  2. 停止模式 (Stop Mode):停止模式下,CPU和主要时钟源停止运行,但一些关键外设仍然可以继续工作,例如RTC(实时时钟),以便在需要时能够唤醒系统。

  3. 待机模式 (Standby Mode):待机模式是最低功耗的模式之一,在此模式下,几乎所有的设备和时钟都被关闭,只保留RTC和WKUP(唤醒)引脚以及备份存储器的供电,以等待外部事件唤醒系统。

2.1 睡眠模式 (Sleep Mode)

        在STM32执行完WFI/WFE指令后,进入睡眠模式。在这种模式下,程序暂停运行,直到被唤醒。SLEEPONEXIT位决定了当执行完WFI或WFE后,是立即进入睡眠,还是等待STM32从最低优先级的中断处理程序中退出后再进入睡眠。所有的I/O引脚在睡眠模式下保持运行模式时的状态。使用WFI指令进入睡眠模式时,任何一个NVIC响应的中断均可唤醒;使用WFE指令时,则可以通过唤醒事件来唤醒STM32。

睡眠模式唤醒后,程序将从进入睡眠模式的下一条语句开始执行。

示例:

#include "stm32f10x.h"

int main(void) {
    // 初始化代码

    while (1) {
        // 主程序逻辑

        // 进入睡眠模式
        __WFI();
        
        // 唤醒后继续执行
    }
}
2.2 停止模式 (Stop Mode)

        执行完WFI/WFE指令后,STM32进入停止模式。在停止模式下,程序暂停运行,同时1.8V供电区域的所有时钟被停止,包括PLL、HSI和HSE。SRAM和寄存器内容被保留。所有的I/O引脚保持运行模式时的状态。当一个中断或唤醒事件导致退出停止模式时,系统时钟会选择HSI。在低功耗模式下,系统从停止模式退出时,会有一段额外的启动延时。WFI指令进入停止模式时可被任何一个EXTI中断唤醒,而WFE指令则可被任何一个EXTI事件唤醒。

停止模式唤醒后,程序从停止模式进入的下一条语句开始执行。

示例:

#include "stm32f10x.h"

int main(void) {
    // 初始化代码
    //...
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);    //配置PWR时钟

    while (1) {
        // 主程序逻辑
        
        // 进入停止模式
        PWR_EnterSTOPMode(PWR_Regulator_ON, PWR_STOPEntry_WFI);
      
        // 唤醒后继续执行
        SystemInit();    //重新启动HSE时钟
    }
}
2.3 待机模式 (Standby Mode)

        执行完WFI/WFE指令后,STM32进入待机模式。在待机模式下,整个1.8V供电区域被断电,包括PLL、HSI和HSE,SRAM和寄存器内容会丢失,只有备份的寄存器和待机电路保持供电。在待机模式下,所有的I/O引脚变为高阻态(浮空输入)。唤醒可以由WKUP引脚的上升沿、RTC闹钟事件的上升沿、NRST引脚上的外部复位或IWDG复位触发。

待机模式唤醒后,程序的执行等同于系统的软件复位。因此,唤醒后程序从最开始运行。

在待机模式下,除了以下特定引脚外,所有GPIO引脚都处于高阻态:

  • 复位引脚 (始终有效)
  • 当被设置为防侵入或校准输出时的TAMPER引脚
  • 被使能的唤醒引脚

示例:

#include "stm32f10x.h"

int main(void) {
    // 初始化代码
    //...
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);    //配置PWR时钟

    while (1) {
        // 主程序逻辑

        // 进入待机模式
        PWR_EnterSTANDBYMode();
        
        // 程序将从复位状态重新启动
    }
}

三、总结

        低功耗模式在电子设备中的应用带来了多重好处,如延长电池使用时间、提升设备可靠性,同时降低电路负载并延长电子元件寿命。不同的低功耗模式使设备能够根据需求灵活调节,适应各种应用场景,从而显著提升系统的效率和可持续性。

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

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

相关文章

如何在IDEA上使用JDBC编程【保姆级教程】

目录 前言 什么是JDBC编程 本质 使用JDBC编程的优势 JDBC流程 如何在IEDA上使用JDBC JDBC编程 1.创建并初始化数据源 2.与数据库服务器建立连接 3.创建PreparedStatement对象编写sql语句 4.执行SQL语句并处理结果集 executeUpdate executeQuery 5.释放资源 前言 在…

yandex 不定长旋转验证码PPOCR识别案例

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 某yandex 不定长旋转验证码如下: 可以看到,此种验证码非常变态,旋转角度不固定,干扰背景不固定,字符长度不固定,弯曲形变都是不固定的,在人眼都很难分辨验证…

『 C++ 』异常

文章目录 异常概念及使用自定义类型的异常C 标准库的异常体系异常的重新抛出异常安全异常规范异常的优缺点 异常概念及使用 C语言常见的错误处理机制如下: 返回值约定 通过定义一些列的返回值以及其对应的错误信息表述,通过不同的返回值来查看当前函数是否与调用成功; 通常情…

锂电池生产工艺数字化的业务架构.pptx

搜索《方案驿站》公众号进行下载。

【系统架构设计】数据库系统(五)

数据库系统(五) 数据库模式与范式数据库设计备份与恢复分布式数据库系统数据仓库数据挖掘NoSQL大数据 数据库模式与范式 数据库设计 备份与恢复 分布式数据库系统 数据仓库 数据挖掘 对数据挖掘技术进行支持的三种基础技术已经发展成熟&#xff0c…

【设计模式】六大原则-上

首先什么是设计模式? 相信刚上大学的你和我一样,在学习这门课的时候根本不了解这些设计原则和模式有什么用处,反而不如隔壁的C更有意思,至少还能弹出一个小黑框,给我个hello world。 如何你和我一样也是这么想&#xf…

2-56 基于matlab的图像融合增强技术

基于matlab的图像融合增强技术。通过原始图像——傅里叶变换——频率域滤波处理——傅里叶变换——增强后的图像。傅立叶变换以及傅立叶反变换.过程就是将空间的信息分解为在频率上的表示,通过傅立叶正反变换的处理,才使得频率域上的处理可以用于图像的增强。程序已调通&#x…

联想QuickFix工具中心,一款综合性电脑维护和管理工具

联想QuickFix工具中心是联想公司推出的一款综合性电脑维护和管理工具,它集成了众多实用的电脑维护工具,如系统优化、硬盘清理、网络优化、硬件诊断等,旨在为用户提供一个便捷的平台来解决电脑日常使用中遇到的各种问题。该工具中心适用于Wind…

AttributeError: ‘ChatGLMTokenizer‘ object has no attribute ‘sp_tokenizer‘. 已解决

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 ☁️运维工程师的职责:监…

【Linux---07】Shell脚本

文章目录 1. 前置说明1.1 创建shell脚本1.2 执行shell脚本1.3 调试shell脚本1.4 字符冲突 2. 变量2.1 创建&使用变量2.2 位置变量2.3 引号规则2.4 数值变量运算 3. 数组3.1 创建数组3.2 使用数组 4. 运算符4.1 比较运算符4.1.1 数字比较4.1.2 字符串比较 4.2 逻辑运算符4.3…

国内首个可调用API的视频模型,CogVideoX有多能打?

近期,智谱AI在其Maas开放平台(bigmodel.cn)发布了视频生成大模型CogVideoX,它提供了国内首个通过API来使用的文生视频和图生视频服务! 话不多说,我们直接来看一下通过CogVideoX生成的一部短片。 技术原理 CogVideoX融合了文本、…

CSP-J复赛-模拟题4

1.区间覆盖问题: 题目描述 给定一个长度为n的序列1,2,...,a1​,a2​,...,an​。你可以对该序列执行区间覆盖操作,即将区间[l,r]中的数字,1,...,al​,al1​,...,ar​全部修改成同一个数字。 现在有T次操作,每次操作由l,r,p,k四个值组成&am…

未授权访问漏洞系列详解⑦!

VNC未授权访问漏洞 VNC 是虚拟网络控制台 Virtual Network Console 的英文缩写。它是一款优秀的远程控制工具软件由美国电话电报公司AT&T的欧洲研究实验室开发。VNC是基于 UNXI和 Linux 的免费开源软件由 VNC Server 和 VNC Viewer 两部分组成。VNC 默认端口号为 5900、590…

opencascade AIS_TypeFilter AIS_XRTrackedDevice源码学习

opencascade AIS_TypeFilter 前言 通过它们的类型选择交互对象。该过滤器会对本地上下文中的每个交互对象提出问题, 以确定它是否具有非空的所有者,并且如果是,则检查它是否是所需类型。 如果对象在每种情况下都返回 true,则保留…

运动控制卡——固高GTS

文章目录 前言什么是运动控制卡指示灯状态检测主卡指示灯状态说明端子板指示灯状态说明 软件调试(P39)何将控制器配置成脉冲模式设置与定位 编程C#编程 一些概念 前言 在一些控制多轴电机运动的场景下,除了需要驱动器驱动该轴的电机外,还需要用到控制卡…

kickstart自动部署

目录 一 准备工作二 安装软件及其相关配置配置步骤,图形引导部署web服务配置dhcp部署pxe 三 使用新机验证 一 准备工作 主机采用rhel7.9版本 本文使用图形化界面就行操作设置 取消VMware dhcp设置 yum group install "Server with GUI" init 5 #启动图…

vue3中使用logicFlow

浅结logicFlow使用: 应用场景:vue3中使用logicFlow绘制流程图 技术碎片应用: vue3:ref,reactive, onMounted, watchEffect,nextTick,inject logicFlow:节点,边,锚点,事件 官网&#…

大模型微调fine-tuning

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl大模型微调概述 大模型fine-tuning(微调)是一种重要的机器学习技术,特别是在处理自然语言处理(NLP)任务时广泛应用。它指在已经预训练好的大型深度学习模型基础上,使用新的、特定任务相关的…

【文献阅读】GraphAny: A Foundation Model for Node Classification on Any Graph

Abstract 可以执行任何新任务而无需特定训练的基础模型已经在视觉和语言应用中引发了机器学习的革命。然而,涉及图结构数据的应用仍然是基础模型面临的一个难题,因为每个图都有独特的特征和标签空间。传统的图机器学习模型,如图神经网络&…

在Fragment中显示高德地图

一、首先在高德官网上申请key 第一步:按照规定填写Key名称第二步:选择服务平台,运用在android上就勾选anroid就好了第三步:输入发布版安全码SHA1 首先打开命令行按住windows+r两个按键在命令行中输入cd .android,定位到.android文件下调试版本使用 debug.keystore,命令为…