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

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

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

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

微信图片_2026-01-14_131730_192.png
5 y9 B8 g2 G' T二、上电复位与掉电复位(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
# p1 R" ]! x2 s) b* v# ~! I/ h" g9 @$ X0 K
三、STM32的低功耗模式系统复位后,MCU处于正常运行模式。在正常运行模式下,CPU由HCLK时钟信号驱动连续执行程序指令。用户可以采取一些措施降低系统正常运行时的功耗,例如,可以降低HCLK时钟频率,或者将不使用的外设的时钟信号关闭。从main()函数的代码可以看出,在执行完各种初始化后,最后都是执行一个while()死循环。在while()循环里,通过轮询方式处理各种事务,或通过中断响应处理各种事务。在正常运行模式下,while()循环里的程序代码是一直执行的,即使一行代码都没有。所以在正常运行模式下,一般的嵌入式系统的CPU计算时间都是浪费的。除了正常运行模式,STM32F4系列MCU还有3种低功耗模式。 微信图片_2026-01-14_131738_561.png / u( c3 f  s- e- W4 I
1.睡眠(Sleep)模式Cortex-M4内核时钟停止,1.2V调压器正常工作,外设保持运行。通过WFI(wait for interrupt)或WFE(wait for event)指令进入睡眠模式。进入睡眠模式后,CPU不再执行新的代码。CPU可以被中断或事件唤醒,唤醒后继续执行进入睡眠点之后的代码。 微信图片_2026-01-14_131828_370.png : M5 [- W# f/ w  c& e4 c
微信图片_2026-01-14_131859_651.png 8 u+ ~+ x' F2 f& t$ m8 Z
( p" s  A% c) K
  • 参数检查 assert_param()

    , c% A3 g& v/ I1 T$ S
  • 确保传入参数只能是:, ^* z  W( [6 S
    PWR_SLEEPEntry_WFI(0x01)    PWR_SLEEPEntry_WFE(0x02)
  • 防止非法参数导致未定义行为3 j, z2 a/ e7 y4 I  d
  • 清除SLEEPDEEP位


    ; M5 l3 V8 b7 t- |5 `& |

2 w- _% w4 P# k' i
  • SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;
    ! T' t5 |& \9 v+ ?' H& p/ b
; C- ~7 F  a! |; s) ]: b
目的:明确指定进入睡眠模式(非停止/待机模式)寄存器说明:Cortex-M0系统控制寄存器(SCR)的SLEEPDEEP位:

    . W& I- }# w; F; L& D( h& K# ]
    • 0= 睡眠模式
      . i3 Q# t8 T! l" `
  • 1 = 深度睡眠模式(停止/待机); G$ X4 `6 E# Y
硬件关联:该位与电源控制寄存器(PWR_CR)的PDDS和LPDS位协同工作2.停止(Stop)模式1.2V域所有时钟都停止,所有外设停止工作,内部调压器可以处于运行或低功耗模式,内部SRAM和寄存器的内容被保留,HSI和HSE振荡器关闭。通过EXTI中断或EXTI事件唤醒,CPU从停止处继续执行代码。 微信图片_2026-01-14_131837_249.png
; D5 D* h! }6 W# V& |+ E 微信图片_2026-01-14_131903_267.png
, B- M) E* ?- X; l2 [3.待机(Standy)模式
- u1 O' @# b/ [# }调压器停止,1.2V域断电,内部SRAM和寄存器的内容丢失。只能通过SYS_WKUP引脚的上升沿、RTC闹钟事件、RTC唤醒事件、RTC入侵事件、NRST引脚外部复位等唤醒。从待机模式唤醒相当于系统复位,程序从头开始执行。 微信图片_2026-01-14_131850_493.png
- l% K) ?+ `1 e1 G, L* h' M+ w 微信图片_2026-01-14_131906_551.png
1 @% Z# F4 D* R8 e) J! y9 S在这3种低功耗模式中,待机模式功耗最低,但是从待机模式唤醒相当于系统复位,程序从头开始执行。睡眠模式和停止模式都能停止CPU的程序执行,被唤醒后,从程序停止处继续执行。应根据系统的实际功能需求选择合适的低功耗模式。
1 a0 W, ~" Y6 s# @+ o6 O0 j/ l5 Y

! z! s3 U6 d8 \9 ?
赞 收藏 评论0 发布时间:2026-1-14 13:24

举报

0个回答

所属标签

相似技术帖

官网相关资源

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