cortex-m

STM32F4低功耗学习笔记

STM32F4低功耗模式

一、低功耗作用:

    在一些使用电池供电或者产品功能上具有高耗电的外设,并且还对功耗有严格要求的应用场景下,就需要通过使设备上外设或者单片机工作在不同的电源模式下,做到降低系统功耗,延长电池使用时间的效果。本文着重讲解STM32F4系列单片机拥有哪些自带低功耗模式,以及如何进入和退出这些工作模式。

二、STM32F4如何降低功耗:

1.通过降低CPU主频的方式降低单片机功耗。如果单片机上跑的程序不复杂时,可通过降低单片机CPU主频的方式来实现降低功耗。
2.关闭不必要的外设时钟。通过在不使用时关闭单片机外设时钟的方式降低因外设所损失的电能。在打开不同的外设情况下,所消耗的电流是不同的,一般情况下单片机内部ADC模块会消耗相对较多的电能。
3.通过使单片机进入低功耗模式,实现降低功耗的目的。在STM32F4系统内有睡眠模式停止模式待机模式三种。三种模式分别对应不同使用场景,进入不同模式后功耗也有所不同。

三种低功耗模式区别:

    首先先介绍睡眠模式,什么是睡眠模式:在进入睡眠模式之后,会停止掉CPU时钟,此时单片机中外设正常工作,中断 、内核电压都是正常模式,只有CPU时钟是处于关闭状态,所以CPU也处于不工作模式,此时系统仍然可以从任意中断或者唤醒事件中唤醒,好处是唤醒时间短,唤醒后从进入睡眠 模式地方继续运行,单片机状态不会丢失。但是缺点是功耗相对与停止模式待机模式是偏高的。
    停止模式,什么是停止模式:停止模式是睡眠模式的一个进阶版本,在进入停止模式之后不光会关闭CPU时钟,还会关闭HSIHSE时钟,总结就是进入停止模式后,单片机会关闭除RTC时钟以外所有时钟,包括HSILSE时钟,唤醒后会用HSILSI作为CPU主频,从进入停止模式的地方恢复运行。当然恢复方式也比睡眠模式更加少一些,可以选择从任意EXTI线唤醒。

    待机模式,什么是待机模式:待机模式是STM32F4系列单片机中功耗最低的一种低功耗模式,进入此模式之后,会关闭除RTC以外的所有时钟,从而大幅降低单片机所消耗电能,是3中低功耗模式中最省电的模式,当然也必须有所牺牲,那就是因为会关闭RAM供电,导致单片机在此模式唤醒后只能从复位向量后开始运行。不能从进入此模式的地方恢复运行。

三种模式对比:

模式名称 进入方式 唤醒方式 对1.2V域影响 对时钟影响 调压器
睡眠模式 WFI 任何中断 CPU CLK关闭对其它时钟或模拟时钟无影响 开启
睡眠模式 WFE 唤醒事件 CPU CLK关闭对其它时钟或模拟时钟无影响 开启
停止模式 PDDS和LPDS位 + SLEEPDEEP位 + WFI 或 WFE 任意EXTI线(包括内部线和外部线) 所有1.2V域时钟关闭 HSI和LSE振荡器关闭 -
待机模式 PDDS位 + SLEEPDEEP位 + WFIWFE WKUP引脚上升沿、RTC闹钟(闹钟A或闹钟B)、RTC唤醒事件、RTC入侵事件、RTC时间戳事件、NRST引脚外部复位、IWDG复位 所有1.2V域时钟都关闭 HSILSE振荡器关闭 关闭

总结:在STM32F4系列上拥有三种低功耗模式,分别是睡眠模式停止模式待机模式,功耗依次减小。功耗最低的是待机模式。

1)当需要快速回复并且会频繁进入低功耗并退出的情景下采用睡眠模式,如在FreeRTOS操作系统下进入短暂的空闲模式时,就非常实用让单片机进入睡眠模式从而降低部分电能消耗;

2)当需要设备较长时间休眠并允许CPU停止运行,需要设备能从休眠模式下唤醒并继续系统运行的情景下,非常适合(必须)使用停止模式。

3)当需要设备较长时间休眠并允许CPU停止运行,不要求设备唤醒从休眠处运行的情景下,可以使用待机模式。

三、进入低功耗模式

3.1 进入低功耗模式代码

模式 进入代码
睡眠模式 __WFI()__WFE
停止模式 PWR_EnterSTOPMode(PWR_Regulator_ON,PWR_STOPEntry_WFI)
待机模式 PWR_EnterSTANDBYMode();

3.1 如何从低功耗唤醒:

睡眠模式:

  • 外设控制器使能一个不在NVIC中使能的中断,并且使能SEVONPEND位。
  • 配置一个外部或内部EXTI线为时间模式。

停止模式:

待机模式:

四、功耗对比

睡眠模式 > 停止模式 > 待机模式

五、参考文献:

- [1] STM32待机模式和停机模式
- [2] STM32进入STOP模式并唤醒实现总结
- [3] 正点原子【STM32-F407探索者】第二十二章 待机唤醒实验
- [4] ST F4系列单片机电源模式

回复

This is just a placeholder img.