STM32低功耗模式详解:睡眠、停机、待机模式原理与实践(下) | 零基础入门STM32第九十三步

发布于:2025-04-07 ⋅ 阅读:(36) ⋅ 点赞:(0)
主题 内容 教学目的/扩展视频
低功耗模式 什么是低功耗,模式介绍,切换方法。 为电池设备开发做准备。

师从洋桃电子,杜洋老师



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

一、低功耗模式基本工作原理

1.1 功耗层级对比

模式 唤醒源 功耗等级 保持状态
睡眠模式 中断/事件 最低 保持内核寄存器
停机模式 外部中断/RTC闹钟 中等 保持SRAM
待机模式 复位按键/专用唤醒引脚 最高 系统复位

1.2 工作流程

执行WFI/WFE指令
SLEEPDEEP=0
SLEEPDEEP=1
PWR_CR位设置
中断/事件
外部中断
复位信号
运行模式
进入低功耗
模式选择
睡眠模式
停机模式
待机模式
唤醒恢复
系统重启

二、睡眠模式实践

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 关键配置

MCU PWR NVIC Interrupt RCC 使能时钟(RCC_APB1Periph_PWR) 配置外部中断 进入停机模式 时钟自动关闭 触发唤醒 重新初始化系统时钟 MCU PWR NVIC Interrupt RCC

四、待机模式实践

4.1 测试程序实现

PWR_WakeUpPinCmd(ENABLE); // 使能PA0唤醒功能
PWR_EnterSTANDBYMode();   // 进入待机模式

4.2 注意事项

  1. 唤醒后程序从头开始执行
  2. 需要配置WK_UP引脚为无上拉模式
  3. 保持时间至少1ms的唤醒信号

五、扩展应用场景

5.1 模式选择建议

应用场景 推荐模式 优势分析
实时数据采集 睡眠模式 快速唤醒,保留运行状态
周期性传感器监测 停机模式 低功耗与快速响应平衡
长期待机设备 待机模式 最低功耗,硬件复位特性

5.2 进阶技巧

  1. 混合模式使用:在不同工作阶段切换模式
  2. RTC唤醒配置:配合日历功能实现定时唤醒
  3. 功耗测量方法:使用uA级电流表串联测量

六、常见问题解答

Q1:唤醒后程序卡死怎么办?

  • 检查时钟初始化
  • 验证中断标志清除
  • 确认堆栈未溢出

Q2:如何测量实际功耗?

  1. 断开调试器
  2. 使用精密万用表电流档
  3. 测量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)