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电源三种低功耗模式介绍
节省功耗效果:待机 > 停止 > 睡眠。
1、睡眠模式
先说一下事件(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、停止模式
软件步骤(粗体是必须做的步骤):
1、进入睡眠前可以降低或者关闭外设的时钟速度达到更好的效果(唤醒后要恢复外设时钟)。
2、芯片内部FLASH掉电。
3、设置唤醒方式:_WFI 或者 _WFE,(RTC闹钟中断也可以唤醒,后面说)
4、关闭电压调节器(电压调节器是动态调节芯片内部电压,关闭后更加节省功耗,但是唤醒时间加长)
5、进入睡眠模式:所有的1.2V时钟都关闭(HSI和HSE的振荡器关闭,不改变GPIO管脚状态)。
6、唤醒方式:任意外部中断 或者 RTC闹钟
7、唤醒延时:有,(关闭电压调节器唤醒时间更长)。
8、唤醒之后:重新初始化时钟。
9、程序继续运行。
3、待机模式
软件步骤(粗体是必须做的步骤):
1、是否允许访问备份区
2、是否备份区使用RTC(用于唤醒)
3、设置唤醒方式:WKUP 引脚上升沿、 RTC 闹钟(闹钟 A 和闹钟 B)、 RTC 唤醒事件、 RTC入侵事件、 RTC 时间戳事件、 NRST 引脚外部复位 和 IWDG 复位。
4、进入待机模式:关闭1.2V所有时钟,HSI和HSE的振荡器关闭,电压调节器关闭。
5、唤醒延时:有
6、唤醒之后:复位程序(和按下复位键效果一致)
4、RTC闹钟唤醒
个人感觉手册写的很详细(我懒),认真看完就懂了,不懂再交流。
5、STM32CubeMX配置图片
唤醒按键
RTC使用外部时钟晶振
、