上一篇:STM32-(32):窗口看门狗 | 下一篇:STM32-(34):DMA传输控制(理论) |
---|
功耗管理
很多单片机都有低功耗模式,STM32也不例外。在系统或电源复位以后,微控制器处于运行状态。运行状态下的HCLK为CPU提供时钟,内核执行程序代码。当CPU不需继续运行时,可以利用多个低功耗模式来节省功耗,例如等待某个外部事件时。
用户需要根据最低电源消耗,最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。
STM32的低功耗模式有3种:
- 睡眠模式(CM3内核停止,外设仍然运行)
- 停止模式(所有时钟都停止)
- 待机模式(1.8V内核电源关闭)
在这三种低功耗模式中,最低功耗的是待机模式,在此模式下,最低只需要2uA左右的电流。停机模式是次低功耗的,其典型的电流消耗在20uA左右。最后就是睡眠模式了。用户可以根据自己的需求来决定使用哪种低功耗模式。
此外,在运行模式下,可以通过以下方式中的一种降低功耗:
- 降低系统时钟
- 关闭APB和AHB总线上未被使用的外设的时钟。
三种低功耗模式
1、睡眠模式下,CPU时钟处于停止状态,但是所有的外设继续运行,电源功耗耗相应地减少。任一中断或唤醒事件可将微处理器从睡眠模式中唤醒。
2、停止模式是在 CorteX-M3的深睡眠模式基础上结合了外设的时钟控制机制,在停止模式下电压调节器可运行在正常或低功耗模式。此时在1.8 V 供电区域的的所有时钟都被停止, PLL、HIS和 HSE RC振荡器的功能被禁止, SRAM 和寄存器内容被保留下来。
3、待机模式可实现系统的最低功耗。该模式是在 CorteX-M3深睡眠模式时关闭电压调节器。整个1.8V供电区域被断电。 PLL、HSI和 HSE 振荡器也被断电。SRAM和寄存器内容丢失。只有备份的寄存器和待机电路各维持供电 。
重点分析待机模式
1、 在进入待机模式后,除了复位引脚以及被设罝为防侵入或校准输出时的TAMPER引脚和被使能的唤醒引脚(WK_UP脚),其他的IO引脚都将处于高阻态。
2、 从待机模式唤醒后,除了电源控制/状态寄存器(PWR_CSR) , 所有寄存器被复位。从待机模式唤醒后的代码执行等同于复位后的执行。
电源控制寄存器(PWR_CR)
1.通过设置PWR_CR中的PDDS位,使CPU进入深度睡眠时进入待机模式,同时通过CWUF位,清除之前的唤醒位。
电源控制/状态寄存器(PWR_CSR)
通过设置PWR_CSR的EWUP位,来使能WKUP引脚用于待机模式唤醒。我们还可以从WUF来检查是否发生了唤醒事件。
从待机模式唤醒步骤
1 )使能电源时钟•
因为要配置电源控制寄存器,所以必须先使能电源时钟。
在库函数中,使能电源时钟的方法是:
RCC_APB1PeriphClockCmd ( RCC_APB1Peripli_PWR, ENABLE ): //使能 PWR 外设时钟
2 ) 设 置WK_UP引脚作为唤醒源.
使能时钟之后再设置PWR_CSR的 EWUP 位,使能 WK_UP 用于将 CPU 从待机模式唤醒。
在库函数中,设置使能 WK_UP 用于唤醒CPU 待机模式的函数是:
PWR_WakeUpPinCmd(ENABUE); // 使能唤醒管脚功能
-
设置 SLEEPDEEP 位,设置 PDDS 位,执行 WFI 指令,进入待机模式.
void PWR_EnterSTANDBYMode(void ): -
最后编写WK_UP中断函数.
因为我们通过 WK_UP 中断 ( PA0 中断)来唤醒CPU, 所以我们有必要设置一下该中断函
数,同时我们也通过该函数里面进入待机模式
实验
实现如下功能:通过长按(3秒)WK_UP按键开机,并且通过LED的闪烁指示程序已经开始运行,再次长按该键,则进入待机模式,LED灯关闭,程序停止运行。类似于手机的开关机。
中断设置初始化函数
主函数
上一篇:STM32-(32):窗口看门狗 | 下一篇:STM32-(34):DMA传输控制(理论) |
---|