你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

小白也能明白的STM32的低功耗与唤醒机制

[复制链接]
flyingstar 发布时间:2026-1-14 13:24
一、STM32的电源管理简介

电源对电子设备的重要性不言而喻,它是保证系统稳定运行的基础,而保证系统能稳定运行后,又有低功耗的要求。 在很多应用场合中都对电子设备的功耗要求非常苛刻,如某些传感器信息采集设备,仅靠小型的电池提供电源,要求工作长达数年之久, 且期间不需要任何维护;由于智慧穿戴设备的小型化要求,电池体积不能太大导致容量也比较小,所以也很有必要从控制功耗入手, 提高设备的续行时间。因此,STM32有专门的电源管理外设监控电源并管理设备的运行模式,确保系统正常运行,并尽量降低器件的功耗。

微信图片_2026-01-14_131730_192.png . X! ]5 \4 S- d; G8 \
二、上电复位与掉电复位(POR与PDR)当检测到VDD的电压低于阈值VPOR及VPDR时,无需外部电路辅助,STM32芯片会自动保持在复位状态,防止因电压不足强行工作而带来严重的后果。 见图 POR与PDR ,在刚开始电压低于VPOR时(约1.92V), STM32保持在上电复位状态(POR,Power On Reset),当VDD电压持续上升至大于VPOR时,芯片开始正常运行,而在芯片正常运行的时候, 当检测到VDD电压下降至低于VPDR阈值(约1.88V),会进入掉电复位状态(PDR,Power Down Reset)。 微信图片_2026-01-14_131735_106.png 7 G3 n; ]: E2 i3 j7 Z1 K
! h! H& J/ \& k! Q- C# t0 p
三、STM32的低功耗模式系统复位后,MCU处于正常运行模式。在正常运行模式下,CPU由HCLK时钟信号驱动连续执行程序指令。用户可以采取一些措施降低系统正常运行时的功耗,例如,可以降低HCLK时钟频率,或者将不使用的外设的时钟信号关闭。从main()函数的代码可以看出,在执行完各种初始化后,最后都是执行一个while()死循环。在while()循环里,通过轮询方式处理各种事务,或通过中断响应处理各种事务。在正常运行模式下,while()循环里的程序代码是一直执行的,即使一行代码都没有。所以在正常运行模式下,一般的嵌入式系统的CPU计算时间都是浪费的。除了正常运行模式,STM32F4系列MCU还有3种低功耗模式。 微信图片_2026-01-14_131738_561.png
) A4 A+ C; R5 j9 f' e- R$ y1.睡眠(Sleep)模式Cortex-M4内核时钟停止,1.2V调压器正常工作,外设保持运行。通过WFI(wait for interrupt)或WFE(wait for event)指令进入睡眠模式。进入睡眠模式后,CPU不再执行新的代码。CPU可以被中断或事件唤醒,唤醒后继续执行进入睡眠点之后的代码。 微信图片_2026-01-14_131828_370.png 5 m  M: }# G. W- }2 W
微信图片_2026-01-14_131859_651.png
) _3 Z/ S1 v9 `( C
1 @; k+ x! z/ G; O1 s/ `
  • 参数检查 assert_param()

    . l5 Q0 ~, J9 c  g' w2 u" d
  • 确保传入参数只能是:; ^. k( H2 B' b* O( ^! P$ [, J0 \
    PWR_SLEEPEntry_WFI(0x01)    PWR_SLEEPEntry_WFE(0x02)
  • 防止非法参数导致未定义行为$ ^  Z9 e1 X7 t. i
  • 清除SLEEPDEEP位


    1 @" ]9 a, q3 d' B/ B; T$ ^+ @

  n, Z2 ]+ p6 k) t
  • SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;
    6 l; U5 @5 A' J9 i: T. I! W& Y

. {# |& Z. O8 u$ [1 w9 Z目的:明确指定进入睡眠模式(非停止/待机模式)寄存器说明:Cortex-M0系统控制寄存器(SCR)的SLEEPDEEP位:
    8 o  ~6 ~8 g' m: d5 C
    • 0= 睡眠模式
      : e  f# l$ V3 e& x4 |8 p- k
  • 1 = 深度睡眠模式(停止/待机)
    ) K7 e+ D, G2 s4 h5 A. W
硬件关联:该位与电源控制寄存器(PWR_CR)的PDDS和LPDS位协同工作2.停止(Stop)模式1.2V域所有时钟都停止,所有外设停止工作,内部调压器可以处于运行或低功耗模式,内部SRAM和寄存器的内容被保留,HSI和HSE振荡器关闭。通过EXTI中断或EXTI事件唤醒,CPU从停止处继续执行代码。 微信图片_2026-01-14_131837_249.png
* T% v8 c* l  ]+ V4 l0 g 微信图片_2026-01-14_131903_267.png
: c, A% g% [( E5 X8 K, [+ E  h3.待机(Standy)模式
2 G: {# C; C. G5 C5 r9 q调压器停止,1.2V域断电,内部SRAM和寄存器的内容丢失。只能通过SYS_WKUP引脚的上升沿、RTC闹钟事件、RTC唤醒事件、RTC入侵事件、NRST引脚外部复位等唤醒。从待机模式唤醒相当于系统复位,程序从头开始执行。 微信图片_2026-01-14_131850_493.png
& L3 N( L# U, G6 Q0 N 微信图片_2026-01-14_131906_551.png
! E/ c1 [1 C1 E在这3种低功耗模式中,待机模式功耗最低,但是从待机模式唤醒相当于系统复位,程序从头开始执行。睡眠模式和停止模式都能停止CPU的程序执行,被唤醒后,从程序停止处继续执行。应根据系统的实际功能需求选择合适的低功耗模式。; _. T& d6 H! ~$ n) t
. S2 N: h  o: Z6 b2 d0 p* j
赞 收藏 评论0 发布时间:2026-1-14 13:24

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版