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)

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