这几天用到了STM32L051的低功耗。之前也接触过低功耗,各种模式有些迷糊,正好整理一下。
手册上说有5个模式,功耗依次递减。
低功耗运行模式:调压器处于低功耗模式,时钟频率受限。
进入方式: 配置APB,AHB时钟线、系统时钟频率和调压器。
睡眠模式:内核停止,外设保持运行。
进入方式:WFI 或WFE。
系统控制寄存器 位SLEEPDEEP = 0 浅睡眠
低功耗睡眠模式:内核停止,时钟频率受限,运行的外设数受限,调压器处于低功耗模式,Flash 停止。
进入方式:进入睡眠模式前,配置为低功耗运行模式。
停止模式:所有时钟停止,调压器运行,调压器处于低功耗模式。
进入方式:PWR_CR电源控制寄存器,PDDS=0, 深睡时进入停止模式
PWR_CSR电源状态控制寄存器WUF=0, 唤醒标志清零
SLEEPDEEP=1 深睡眠
配置RCC_CFGR寄存器的STOPWUCK位宣传唤醒后的时钟源。
WFE /WFI
待机模式:VCORE 域断电。
进入方式: PWR_CR电源控制寄存器,PDDS=1, 深睡时进入待机模式
PWR_CSR电源状态控制寄存器WUF=0, 唤醒标志清零
SLEEPDEEP 位 = 1 深睡眠
唤醒标志源对应的RTC标志清零。
以上。后续遇到问题,在陆续添加整理。
踩坑1:因为电路板设计问题,导致在进入待机模式前关闭所有外设和时钟的时候会死机。
死机原因猜测为:关闭外设的时候cpu电流不稳定,导致了死机。
解决办法:在关闭外设的时候,增加延时,逐步关闭。