一.STM电源系统结构介绍(F1)
二.低功耗模式介绍
STM32具有运行、睡眠、停止和待机四种工作模式。
上电后默认是在运行模式,当内核不需要继续运行时,可以选择后面三种低功耗模式。
睡眠模式:内核时钟关闭;
- 优点:对系统影响小;
- 缺点:节能效果最差。
停止模式:内核时钟关闭,关闭内核逻辑电路的所有时钟,关闭时钟系统;
- 优点:节能效果好,程序不会复位;
- 缺点:恢复时间较长。
待机模式:内核时钟关闭,关闭内核逻辑电路的所有时钟,关闭时钟系统,关闭电压调节器;
- 优点:节能效果最好;
- 缺点:程序会复位,少数条件唤醒。
同等条件下(T = 25℃,VDD = 3.3V,系统时钟72MHz)
模式 | 主要影响 | 唤醒时间 | 供应电流(典型值) |
正常模式 | 所有外设正常工作 | 0 | 51mA |
睡眠模式 | CPU时钟关闭 | 1.8us | 29.5mA |
停止模式 | 1.8V区域时钟关闭,电压调节器低功耗 | 5.4us | 35uA |
待机模式 | 1.8V区域时钟关闭,电压调节器关闭 | 50us | 3,8uA |
三.低功耗相关寄存器介绍(F1)
寄存器 | 名称 | 作用 |
SCB_SCR | 系统控制寄存器 | 选择休眠和深度休眠模式,用于其他低功耗特性的控制 |
PWR_CR | 电源控制寄存器 | 可以设置低功耗相关(清楚标记位、模式) |
PWR_CSR | 电源控制/状态寄存器 | 用于查看系统当前状态(待机/唤醒标志 使能唤醒引脚) |
系统控制寄存器(SCB_SCR)
注意:进入停止模式或者待机模式,SLEEPDEEP置为1。
停止模式:PDDS清0,LPDS选调节器模式;
待机模式:PDDS置1,清除唤醒位CWUF。
在待机模式下,使用WKUP引脚唤醒并需要清楚WUF标记位;WKUP上升沿才能唤醒待机状态;WUF位实际上得操作CWUF位。
WFI命令(常用)和WFE命令属于内核指令,在cmsis_armcc.h文件中。
四.低功耗相关HAL库驱动介绍(F1)
驱动函数 | 关联寄存器 | 功能描述 |
HAL_PWR_EnterSLEEPMode() | SCB_SCR | 进入睡眠模式 |
HAL_PWR_EnterSTOPMode() | PWR_CR/PWR_SCR | 进入停止模式 |
HAL_PWR_EnterSTANDBYMode() | PWR_CR/SCB_SCR | 进入待机模式 |
HAL_PWR_EnableWakeUpPin() | PWR_CSR | 使能WKUP管脚唤醒功能 |
__HAL_PWR_CLEAR_FLAG() | PWR_CR | 清除PWR的相关标记 |
__HAL_RCC_PWR_CLK_ENABLE() | RCC_APB1ENR | 使能电源时钟 |
五.低功耗模式的使用步骤
<一>.睡眠模式
- 初始化WKUP为中断触发源:参考外部中断引脚初始化;
- 外设低功耗处理(可选):设置MCU外围外设进入低功耗;
- 进入睡眠模式:HAL_PWR_EnterSLEEPMode;
- 等待WKUP外部中断唤醒。
<二>.停止模式
- 初始化WKUP为中断触发源:参考外部中断引脚初始化;
- 外设低功耗处理(可选):设置MCU外围外设进入低功耗;
- 进入停止模式:HAL_PWR_EnterSTOPMode;
- 等待WKUP外部中断唤醒;
- 重新设置时钟、重新选择嘀嗒时钟源、失能systick中断。
<二>.待机模式
注意:待机模式下 ,所有I/O引脚处于高阻态,除了复位引脚、被使能的唤醒引脚等;
待机模式下,不能下载程序,必须退出待机模式才能下载。
- 初始化WKUP为中断触发源(可选):参考外部中断引脚初始化;
- 外设低功耗处理(可选):设置MCU外围外设进入低功耗;
- 使能WKUP的唤醒功能:HAL_PWR_EnableWakeUpPin;
- 清除唤醒标记WUF:__HAL_PWR_CLEAR_FLAG;
- 进入待机模式:HAL_PWR_EnterSTANDBYMode。
六.代码
使用按键触发方式,KEY0进入睡眠模式,KEY1进入停止模式,KEY2进入待机模式,KEY_UP唤醒。(F1)