STM32MX电源管理低功耗模式

前言:

ST官方例程:(直接移植直接用,接口是现成的)

在你STM32Cube固件库安装路径下.

.\..\STM32Cube\Repository\STM32Cube_FW_F4_V1.23.0\Projects\STM32F429I-Discovery\Examples\PWR\PWR_CurrentConsumption

 

例程和测试程序下载链接:https://download.****.net/download/sudaroot/10891176

一、STM32电源三种低功耗模式介绍

STM32MX电源管理低功耗模式

节省功耗效果:待机  > 停止 > 睡眠。

 

 

 

1、睡眠模式

STM32MX电源管理低功耗模式

STM32MX电源管理低功耗模式

先说一下事件(WFI中断(WFE的区别:事件包括中断事件和非中断事件,中断是发生中断事件后执行对应的xxx_IRQHandler()中断服务函数。非中断事件如GPIO电平变化,外设使能,初始化等不发生中断的事件。

详细原理框图可以看STM32F4XX英文参考手册的Figure 41. External interrupt/event controller block diagram

 

注意:睡眠模式下,无论设置事件(WFI)和中断(WFE),滴答时钟SysTick_Handler()都能将其唤醒。

 

软件步骤(粗体是必须做的步骤):

1、进入睡眠前可以降低或者关闭外设的时钟速度达到更好的效果(唤醒后要恢复外设时钟)。

2、失能滴答时钟SysTick_Handler()中断。

3、设置唤醒方式,进入睡眠模式(CPU时钟关闭,内核停止,对其他时钟和ADC时钟无影响,不改变GPIO管脚状态)。

4、唤醒方式:任意中断唤醒

5、唤醒延时:无

6、唤醒之后:使能滴答时钟SysTick_Handler()中断(唤醒后要恢复外设时钟)。

7、程序继续运行。

 

 

2、停止模式

STM32MX电源管理低功耗模式

STM32MX电源管理低功耗模式

 

软件步骤(粗体是必须做的步骤):

1、进入睡眠前可以降低或者关闭外设的时钟速度达到更好的效果(唤醒后要恢复外设时钟)

2、芯片内部FLASH掉电。

3、设置唤醒方式:_WFI 或者 _WFE,(RTC闹钟中断也可以唤醒,后面说)

4、关闭电压调节器(电压调节器是动态调节芯片内部电压,关闭后更加节省功耗,但是唤醒时间加长)

5、进入睡眠模式:所有的1.2V时钟都关闭(HSI和HSE的振荡器关闭,不改变GPIO管脚状态)。

6、唤醒方式:任意外部中断 或者 RTC闹钟

7、唤醒延时:有,(关闭电压调节器唤醒时间更长)。

8、唤醒之后:重新初始化时钟。

9、程序继续运行。

 

 

3、待机模式

STM32MX电源管理低功耗模式

STM32MX电源管理低功耗模式

STM32MX电源管理低功耗模式

 

软件步骤(粗体是必须做的步骤):

1、是否允许访问备份区

2、是否备份区使用RTC(用于唤醒)

3、设置唤醒方式:WKUP 引脚上升沿、 RTC 闹钟(闹钟 A 和闹钟 B)、 RTC 唤醒事件、 RTC入侵事件、 RTC 时间戳事件、 NRST 引脚外部复位 和 IWDG 复位。

4、进入待机模式:关闭1.2V所有时钟,HSI和HSE的振荡器关闭,电压调节器关闭。

5、唤醒延时:有

6、唤醒之后:复位程序(和按下复位键效果一致)

 

 

 

4、RTC闹钟唤醒

STM32MX电源管理低功耗模式

 

个人感觉手册写的很详细(我懒),认真看完就懂了,不懂再交流。

 

5、STM32CubeMX配置图片

唤醒按键

STM32MX电源管理低功耗模式

 

RTC使用外部时钟晶振

STM32MX电源管理低功耗模式

STM32MX电源管理低功耗模式