本期话题
聊一聊
接下来,我们逐个介绍一下各个降低功耗的模式。
(1)降低系统时钟
在运行模式下,通过对预分频寄存器进行编程,可以降低任意一个系统时钟(SYSCLK、HCLK、 PCLK1、 PCLK2)的速度。进入睡眠模式前,也可以利用预分频器来降低外设的时钟。
(2)外部时钟控制
在运行模式下,任何时候都可以通过停止为外设和内存提供时钟(HCLK和PCLKx)来减少功耗。
为了在睡眠模式下更多地减少功耗,可在执行 WFI 或 WFE 指令前关闭所有外设的时钟。
(3)睡眠模式
此模式下,Corte-M3内核停止,所有外设包括 Cortex-M3 核心的外设,如 NVIC、系统时钟(SysTick)等仍在运行) ,所有的 I/O 引脚都保持它们在运行模式时的状态。
该模式唤醒所需的时间最短,因为没有时间损失在中断的进入或退出上。
通过执行 WFI 或 WFE 指令进入睡眠状态。根据Cortex™-M3系统控制寄存器中的 SLEEPONEXIT位的值,有两种选项可用于选择睡眠模式进入机制:
SLEEP-NOW:如果 SLEEPONEXIT 位被清除,当执行 WRI 或 WFE 时,微控制器立即进入睡眠模式。
SLEEP-ON-EXIT:如果 SLEEPONEXIT 位被置位,系统从最低优先级的中断处理程序中退出时,微控制器就立即进入睡眠模式。
(2)停止模式
停止模式是在 Cortex-M3 的深睡眠模式基础上结合了外设的时钟控制机制,所有的时钟都已停止。在停止模式下电压调节器可运行在正常或低功耗模式。
此时在 1.8V 供电区域的的所有时钟都被停止, PLL、 HSI 和 HSE RC振荡器的功能被禁止, SRAM 和寄存器内容被保留下来。
在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态。
在停止模式下,通过设置电源控制寄存器(PWR_CR)的 LPDS 位使内部调节器进入低功耗模式,能够降低更多的功耗。
如果正在进行闪存编程或对APB访问,直到访问操作完成,系统才进入停止模式。
当一个中断或唤醒事件导致退出停止模式时, HSI RC 振荡器被选为系统时钟。
(3)待机模式
待机模式可实现系统的最低功耗。
该模式是在Cortex-M3深睡眠模式时关闭电压调节器。整个 1.8V 供电区域被断电。PLL、 HSI和HSE振荡器也被断电。SRAM 和寄 存器内容丢失。
只有备份的寄存器和待机电路维持供电。
可以通过设置独立的控制位,选择以下待机模式的功能:
独立看门狗(IWDG):可通过写入看门狗的键寄存器或硬件选择来启动IWDG。一旦启动了独立看门狗,除了系统复位,它不能再被停止。
实时时钟(RTC):通过备用区域控制寄存器(RCC_BDCR)的RTCEN位来设置。
内部RC振荡器(LSI RC):通过控制/状态寄存器(RCC_CSR)的LSION位来设置。
外部32.768kHz振荡器(LSE):通过备用区域控制寄存器(RCC_BDCR)的LSEON位设置
外部复位(NRST引脚)、 IWDG复位、 WKUP引脚上的上升沿或RTC闹钟事件的上升沿,可以使微控制器从待机模式退出。
从待机唤醒后,除了电源控制/状态寄存器(PWR_CSR),所有寄存器被复位。代码执行等同于复位后的执行。
好了,感谢阅读,加油~
觉得文章不错,点击“分享”、“赞”、“在看” 呗!