当前位置: 首页 > news >正文

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.dtcms.com/a/106402.html

相关文章:

  • 使用ctags+nvim自动更新标签文件
  • 基于springboot汽车租赁系统
  • 【百日精通JAVA | SQL篇 | 第二篇】数据库操作
  • K8S集群搭建 龙蜥8.9 Dashboard部署(2025年四月最新)
  • 云计算:数字化转型的核心引擎
  • 硬件工程师零基础入门教程(三)
  • 淘天集团Java开放岗暑期实习笔试(2025年4月2日)
  • 数据结构B树的实现
  • 3D Mapping秀制作:沉浸式光影盛宴 3D mapping show
  • Linux | I.MX6ULL内核及文件系统源码结构(7)
  • Java 基础-30-单例设计模式:懒汉式与饿汉式
  • 一份关于近期推理模型研究进展的报告
  • PostgreSQL DDL 语句基本语法概览
  • 程序化广告行业(51/89):Cookie映射与移动设备ID映射解析
  • ARC缓存淘汰算法
  • 青少年编程与数学 02-015 大学数学知识点 03课题、概率论和数理统计
  • 探索Doris:日志分析的新宠,是否能取代老牌ES?
  • 使用PyInstaller打包Python项目
  • 蓝桥杯冲刺:一维前缀和
  • C语言的continue与break
  • web前端开发-JS
  • Python爬虫第3节-会话、Cookies及代理的基本原理
  • PCL RANSAC探测空间直线(指定方向)
  • Pyspark学习一:概述
  • ARM板 usb gadget hid 模拟键鼠
  • 基于 Jackson 的 JSON 工具类实现解析与设计模式应用
  • 网盘解析工具v1.3.1发布,希望能解决黑号问题吧
  • LTSPICE仿真电路:(二十四)MOS管推挽驱动电路简单仿真
  • 【idea】实用插件
  • Redis 03