STM32F103低功耗模式深度解析:从理论到应用实践(上) | 零基础入门STM32第九十二步

主题内容教学目的/扩展视频
低功耗模式什么是低功耗,模式介绍,切换方法。为电池设备开发做准备。

师从洋桃电子,杜洋老师


📑文章目录

    • 一、低功耗模式概述
      • 1.1 为什么需要低功耗模式?
      • 1.2 基本实现原理
    • 二、低功耗模式的本质
      • 2.1 单片机功耗构成
      • 2.2 节能核心策略
    • 三、STM32F103三大低功耗模式详解
      • 3.1 睡眠模式(Sleep Mode)
      • 3.2 停机模式(Stop Mode)
      • 3.3 待机模式(Standby Mode)
    • 四、模式对比与选择指南
    • 五、唤醒机制实现
      • 5.1 典型唤醒源配置
      • 5.2 外部中断唤醒示例
    • 六、省电原理深度解析
      • 6.1 动态功耗控制
      • 6.2 静态漏电流优化
    • 七、应用场景与设计建议
      • 7.1 智能穿戴设备方案
      • 7.2 农业监测系统
    • 八、常见问题解答
    • 九、相关资源


(图1:STM32F103低功耗模式架构示意图)

一、低功耗模式概述

1.1 为什么需要低功耗模式?

  • 电池供电需求:物联网设备、穿戴设备等对续航有严格要求
  • 能源效率优化:减少无效功耗,提升系统整体能效比
  • 环保要求:符合现代电子产品绿色节能的设计理念

1.2 基本实现原理

通过分级关闭功能模块实现阶梯式节能:

正常模式 → 睡眠模式 → 停机模式 → 待机模式10mA       2mA        20μA         2μA

二、低功耗模式的本质

2.1 单片机功耗构成

功耗类型占比典型值影响因素
动态功耗60-70%6-7mA时钟频率、外设工作状态
静态功耗30-40%3-4mASRAM保持、IO口漏电流

2.2 节能核心策略

关闭CPU
睡眠模式
关闭时钟
停机模式
切断电源
待机模式

三、STM32F103三大低功耗模式详解

3.1 睡眠模式(Sleep Mode)

配置寄存器:SCB->SCR

__WFI();  // 等待中断唤醒
__WFE();  // 等待事件唤醒

特征

  • 仅关闭ARM内核
  • 外设保持运行
  • 唤醒时间<1μs

适用场景:实时性要求高的间歇工作设备

3.2 停机模式(Stop Mode)

配置寄存器:PWR->CR

PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);

特征

  • 关闭CPU+时钟系统
  • 保持SRAM内容
  • 典型唤醒时间10μs
  • 支持多种唤醒源:EXTI/RTC/USB等

适用场景:智能门锁、无线传感器节点

3.3 待机模式(Standby Mode)

配置寄存器:PWR->CSR

PWR_EnterSTANDBYMode();

特征

  • 完全断电(仅备份域供电)
  • SRAM内容丢失
  • 唤醒后系统复位
  • 最低功耗2μA

适用场景:环境监测设备(每1小时唤醒采集)


四、模式对比与选择指南

对比项睡眠模式停机模式待机模式
功耗2mA20μA2μA
唤醒时间<1μs10μs复位时间
SRAM保持保持保持丢失
唤醒源所有中断EXTI/RTC/USBWKUP/RTC
代码连续性继续运行继续运行系统复位
典型应用实时控制系统智能家居设备环境监测设备

五、唤醒机制实现

5.1 典型唤醒源配置

// RTC闹钟唤醒配置
RTC_SetAlarm(RTC_GetCounter() + 3600);  // 1小时后唤醒
RTC_ITConfig(RTC_IT_ALR, ENABLE);

5.2 外部中断唤醒示例

// PA0配置为唤醒引脚
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
GPIO_Init(GPIOA, &GPIO_InitStructure);EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_Init(&EXTI_InitStructure);

六、省电原理深度解析

6.1 动态功耗控制

P = C×V²×f
通过降低时钟频率(f)或工作电压(V)实现节能

6.2 静态漏电流优化

  • 关闭未使用外设时钟
  • 配置未使用IO口为模拟输入模式
  • 禁用调试接口(SWD/JTAG)

七、应用场景与设计建议

7.1 智能穿戴设备方案

无操作30s
抬手唤醒
运动监测
正常模式
进入停机模式
返回正常模式

7.2 农业监测系统

  • 使用待机模式+RTC定时唤醒
  • 每2小时采集一次温湿度数据
  • 数据通过LoRa无线发送后立即休眠

八、常见问题解答

Q1:如何测量实际功耗?

  • 使用高精度万用表串联测量
  • 推荐使用Joulescope等专业仪器

Q2:唤醒后外设需要重新初始化吗?

  • 停机模式:需要重新初始化时钟系统
  • 待机模式:需要完全重新初始化

九、相关资源

[1] 洋桃电子B站课程-STM32入门100步
[2] STM32官方文档手册
[3] STM32F103固件函数库用户手册(中文)
[4] 低功耗模式原理.pptx


💬 技术讨论(请在评论区留言~)

📌 下期预告:下一期将探讨低功耗模式程序分析,欢迎持续关注!

点击查阅🔍往期【STM32专栏】文章

版权声明:本文采用[CC BY-NC-SA 4.0]协议,转载请注明来源
实测开发版:洋桃1号开发版(基于STM32F103C8T6)
更新日志

  • v1.0 初始版本(2025-04-02)

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

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

相关文章

JavaScript instanceof 运算符全解析

JavaScript instanceof 运算符全解析 核心语义: 判断一个对象(object)是否属于某个构造函数(constructor)或类的实例,基于原型链(prototype chain)实现类型检测。 一、JavaScript 中的基础用法 1. 语法结构 object instanceof constructor 返回值:布尔值(true/fal…

电脑基础之word基础操作

word是常用的办公软件之一&#xff0c;用于文档编辑&#xff0c;如合同/报告撰写、论文等‌。 一、简介 word文档最早由微软推出&#xff0c;通过Microsoft Office Word软件创建和编辑。由于涉及版权付费问题&#xff0c;大多数个人使用盗版软件。后来金山出了WPS office免费软…

深度解析Python代码中的广告信息提取与JSON处理

哈喽,大家好,我是木头左! 在当今数字化时代,广告无处不在,而从广告中提取关键信息并进行处理则成为了一项重要的技能。本文将深入剖析一段Python代码,该代码旨在从给定的JSON格式字符串中提取广告相关信息,并对其进行解析和处理。通过这段代码,将展示如何运用Python的j…

base64在线解码工具

我们经常会用到base64编码&#xff0c;相应的base64解码成为日常必备&#xff0c;所有我们需要拥有一个base64在线解码工具 base64在线解码工具

Linux——进程信号(3)(信号保存与信号捕捉)

进程信号3 信号保存信号相关概念详解信号集&#xff08;sigset_t&#xff09;及操作函数详解 信号捕捉信号捕捉的详细流程解析信号捕捉的核心概念信号捕捉的完整流程&#xff08;以 SIGQUIT 为例&#xff09; 信号保存 信号相关概念详解 1.核心概念 (1) 信号递达&#xff08…

批量在 txt 记事本文件的指定位置插入行,如在最末尾位置插入行

我们在网上下载的小说经常可以看到内容中每隔多少行都会现一些网站名称和联系方式等广告信息&#xff0c;这些都是固定或者随机插入在小说正文中的。那是怎么样实现在文本文件中指定位置插入这些行的呢&#xff1f;今天就给大家介绍一下如何在 txt 记事本文件或者其它类型的文本…

python的内存管理机制

目录 内存分配方式自动内存管理内存分配策略 垃圾回收机制引用计数垃圾回收对象创建和引用关系引用计数的状态删除变量 标记 - 清除垃圾回收 内存分配的区域划分栈内存堆内存 内存管理的优化内存池技术对象共享 Python 的内存管理机制是其运行效率和安全性的重要保障&#xff0…

火山引擎coze用户市场

火山引擎 **Coze**&#xff08;扣子&#xff09;的用户市场主要集中在 **需要快速构建和部署智能对话应用的企业及开发者群体**&#xff0c;覆盖多个行业与场景。以下是具体分析&#xff1a; --- ### **一、核心用户群体** 1. **企业用户** - **互联网/科技公司**&#…

Java 责任链模式 详解

责任链模式详解 一、责任链模式概述 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式&#xff0c;它允许你将请求沿着处理链传递&#xff0c;直到有一个处理者能够处理它为止。这种模式解耦了请求的发送者和接收者&#xff0c;使多个对象都有机会处理请求。…

【C++初阶】--- string类

1.STL简介 STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且是一个包罗数据结构与算法的软件框架。 2.string类 2.1什么是string类 std::string 类是 C 标准库中用于处理和操作字符串…

Ubuntu 20.04 中 Git 的安装、配置和基本操作指南

本文为经验 所谈 使用版本为ubuntu20.04 1 ubuntu的git初始化 1.安装git sudo apt-get install git 可通过git --version 命令查看&#xff0c;正常输出git版本号即安装成功。 2.配置用户名和邮箱名 git config --global user.name "Your Name" git config --globa…

conda 激活环境vscode的Bash窗口

多份conda环境注意事项&#xff0c;当时安装了两个conda环境&#xff0c;miniconda和conda&#xff0c;导致环境总是冲突矛盾。初始化时需要更加注意。 $ C:/Users/a_hal/miniconda3/Scripts/conda.exe init bash能够显示用哪里的conda环境命令执行。 然后直接conda activate…

Mac下小智AI本地环境部署

可以进行聊天、编写程序、播放歌曲等等的小智语音聊天小助手&#xff0c;在Mac环境下修改源代码&#xff0c;值得拥有。本篇内容主要讲解Mac下环境的搭建&#xff0c;WebSocket的修改。注&#xff1a;环境python3.12.0、ESP-IDF5.4.0、开发板ESP32S3。 目录 1.Git安装2.Python…

Linux安装Cmake (Centos 7.9)

cmake安装 这个虽然已经更新到了4.0.0版本了&#xff0c;但是我们要用3.5版本的&#xff0c;因为这个比较稳定 官方地址&#xff1a;https://github.com/Kitware/CMake/releases/tag/v3.5.0&#xff0c;选择那个cmake-3.5.0-Linux-x86_64.tar.gz下载&#xff0c; 首先解压文…

基于 SpringBoot 的旧物置换网站

收藏关注不迷路&#xff01;&#xff01; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff08;免费咨询指导选题&#xff09;&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;希望帮助更多…

ELK 通过 logstash 收集单个/多个日志文件

一、收集单个日志文件 注意事项&#xff1a; logstah 服务默认启动用户和组是 logstash被收集的日志文件有读的权限并对写入的文件有写权限而 logstash 是普通用户 1.1 编辑 logstash 配置文件 vim /etc/logstash/conf.d/test.conf input {file {path > "/var/log/…

分享一个Drools规则引擎微服务Docker部署

通常我们都是把Drools作为嵌入式使用&#xff0c;但在微服务泛滥时代&#xff0c;还在老套的嵌入式显然不符合微服务架构要求&#xff0c;本文分享一个把Drools作为微服务独立部署的方案。 本方案基于Drools引擎微服务&#xff0c;提供REST接口。 1、可以动态部署Drools规则2…

Mac 本地化部署 dify

Macbook 本地化部署 dify 目录 Macbook 本地化部署 dify安装dockerdocker下载地址 安装dify下载dify到本地github可能遇到的问题: github打开超时在本地解压dify.zip文件本地化部署docker部署可能遇到的问题: 部署超时登录体验 dify 安装docker docker下载地址 根据电脑芯片选…

串口中断接收与环形缓冲实例(apollo3 blue plus)

#define DEV_UART1 1 #define GPS_POWER_PIN 13 #define GPS_LOG_ENABLE 1 #define MAX_UART1_SIZE 1024 #define AM_BSP_GPIO_COM_UART1_TX 8 #define AM_BSP_GPIO_COM_UART1_RX 9 // 定义环形缓冲区结构 typed…

操作系统高频(五)linux命令

操作系统高频&#xff08;五&#xff09;linux命令 1.Linux中查看进程运行状态的指令、tar解压文件的参数。⭐⭐⭐ 在Linux中&#xff0c;可以使用以下指令查看进程的运行状态&#xff1a; top&#xff1a; 用于实时监视系统的进程活动和系统资源使用情况。在终端中运行top…