主题 | 内容 | 教学目的/扩展视频 |
---|---|---|
低功耗模式 | 什么是低功耗,模式介绍,切换方法。 | 为电池设备开发做准备。 |
师从洋桃电子,杜洋老师
📑文章目录
- 一、低功耗模式基本工作原理
- 1.1 功耗层级对比
- 1.2 工作流程
- 二、睡眠模式实践
- 2.1 测试程序解析
- 2.2 程序原理
- 三、停机模式实践
- 3.1 测试程序要点
- 3.2 关键配置
- 四、待机模式实践
- 4.1 测试程序实现
- 4.2 注意事项
- 五、扩展应用场景
- 5.1 模式选择建议
- 5.2 进阶技巧
- 六、常见问题解答
- 七、相关资源

一、低功耗模式基本工作原理
1.1 功耗层级对比
模式 | 唤醒源 | 功耗等级 | 保持状态 |
---|---|---|---|
睡眠模式 | 中断/事件 | 最低 | 保持内核寄存器 |
停机模式 | 外部中断/RTC闹钟 | 中等 | 保持SRAM |
待机模式 | 复位按键/专用唤醒引脚 | 最高 | 系统复位 |
1.2 工作流程
二、睡眠模式实践
2.1 测试程序解析
// main.c关键代码
__WFI(); // 使用WFI指令进入睡眠
// __WFE(); // 使用WFE指令进入睡眠// NVIC配置
NVIC_SystemLPConfig(NVIC_LP_SLEEPDEEP,DISABLE); // 设置为睡眠模式
2.2 程序原理
- 通过
__WFI()
触发等待中断 - 中断服务程序清标志位
- 唤醒后从WFI下一行继续执行
三、停机模式实践
3.1 测试程序要点
PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
// 唤醒后需要重新初始化时钟
RCC_Configuration();
3.2 关键配置
四、待机模式实践
4.1 测试程序实现
PWR_WakeUpPinCmd(ENABLE); // 使能PA0唤醒功能
PWR_EnterSTANDBYMode(); // 进入待机模式
4.2 注意事项
- 唤醒后程序从头开始执行
- 需要配置WK_UP引脚为无上拉模式
- 保持时间至少1ms的唤醒信号
五、扩展应用场景
5.1 模式选择建议
应用场景 | 推荐模式 | 优势分析 |
---|---|---|
实时数据采集 | 睡眠模式 | 快速唤醒,保留运行状态 |
周期性传感器监测 | 停机模式 | 低功耗与快速响应平衡 |
长期待机设备 | 待机模式 | 最低功耗,硬件复位特性 |
5.2 进阶技巧
- 混合模式使用:在不同工作阶段切换模式
- RTC唤醒配置:配合日历功能实现定时唤醒
- 功耗测量方法:使用uA级电流表串联测量
六、常见问题解答
Q1:唤醒后程序卡死怎么办?
- 检查时钟初始化
- 验证中断标志清除
- 确认堆栈未溢出
Q2:如何测量实际功耗?
- 断开调试器
- 使用精密万用表电流档
- 测量VDD引脚电流
Q3:唤醒源不触发怎么办?
- 检查GPIO模式配置
- 验证中断优先级设置
- 测试信号电平是否符合要求
七、相关资源
[1] 洋桃电子B站课程-STM32入门100步
[2] STM32官方文档手册
[3] STM32F103固件函数库用户手册(中文)
[4] 低功耗模式原理.pptx
[5] 睡眠模式测试程序
[6] 停机模式测试程序
[7] 待机模式测试程序
💬 技术讨论(请在评论区留言~)
📌 下期预告:下一期将探讨看门狗,欢迎持续关注!
点击查阅🔍往期【STM32专栏】文章
版权声明:本文采用[CC BY-NC-SA 4.0]协议,转载请注明来源
实测开发版:洋桃1号开发版(基于STM32F103C8T6)
更新日志:
- v1.0 初始版本(2025-04-05)