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

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

师从洋桃电子,杜洋老师


📑文章目录


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


一、低功耗模式概述

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

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

1.2 基本实现原理

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

c 复制代码
正常模式 → 睡眠模式 → 停机模式 → 待机模式
  10mA       2mA        20μA         2μA

二、低功耗模式的本质

2.1 单片机功耗构成

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

2.2 节能核心策略

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


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

3.1 睡眠模式(Sleep Mode)

配置寄存器:SCB->SCR

c 复制代码
__WFI();  // 等待中断唤醒
__WFE();  // 等待事件唤醒

特征

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

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

3.2 停机模式(Stop Mode)

配置寄存器:PWR->CR

c 复制代码
PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);

特征

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

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

3.3 待机模式(Standby Mode)

配置寄存器:PWR->CSR

c 复制代码
PWR_EnterSTANDBYMode();

特征

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

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


四、模式对比与选择指南

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

五、唤醒机制实现

5.1 典型唤醒源配置

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

5.2 外部中断唤醒示例

c 复制代码
// 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 动态功耗控制

plaintext 复制代码
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步](http://www.doyoung.net/) \[2\] [STM32官方文档手册](https://pan.baidu.com/s/1dO5v1lRnl_wtaUCM8Exjcg?pwd=mt6d) \[3\] [STM32F103固件函数库用户手册(中文)](https://pan.baidu.com/s/1YOrsuYdEYKuwpmFLE1vPUA?pwd=ix56) \[4\] [低功耗模式原理.pptx](https://pan.baidu.com/s/1oDxoNc0K5yzAotjR4xs1eg?pwd=g475) *** ** * ** *** 💬 技术讨论(请在评论区留言\~) *** ** * ** *** > **📌 下期预告** :下一期将探讨低功耗模式程序分析,欢迎持续关注! > > [点击查阅🔍往期【STM32专栏】文章](https://blog.csdn.net/liwangsb2/category_12899382.html) > > **版权声明** :本文采用\[CC BY-NC-SA 4.0\]协议,转载请注明来源 > **实测开发版** :洋桃1号开发版(基于STM32F103C8T6) > **更新日志**: > > * v1.0 初始版本(2025-04-02)

相关推荐
森焱森40 分钟前
水下航行器外形分类详解
c语言·单片机·算法·架构·无人机
小殷学长3 小时前
【单片机毕业设计17-基于stm32c8t6的智能倒车监测系统】
stm32·单片机·课程设计
TESmart碲视4 小时前
HKS201-M24 大师版 8K60Hz USB 3.0 适用于 2 台 PC 1台显示器 无缝切换 KVM 切换器
单片机·嵌入式硬件·物联网·游戏·计算机外设·电脑·智能硬件
small_wh1te_coder5 小时前
硬件嵌入式学习路线大总结(一):C语言与linux。内功心法——从入门到精通,彻底打通你的任督二脉!
linux·c语言·汇编·嵌入式硬件·算法·c
花落已飘6 小时前
STM32中实现shell控制台(shell窗口输入实现)
stm32·单片机·嵌入式硬件
花落已飘6 小时前
STM32中实现shell控制台(命令解析实现)
stm32·shell
没有钱的钱仔6 小时前
STM32低功耗模式全面指南
css·stm32·css3
TDengine (老段)7 小时前
TDengine STMT2 API 使用指南
java·大数据·物联网·时序数据库·iot·tdengine·涛思数据
牵牛老人8 小时前
Qt处理USB摄像头开发说明与QtMultimedia与V4L2融合应用
stm32·单片机·qt
宇钶宇夕9 小时前
针对工业触摸屏维修的系统指南和资源获取途径
单片机·嵌入式硬件·自动化