STM32CubeMX | STM32 L0系列HAL库低功耗STOP模式唤醒(RTC时钟唤醒+外部中断唤醒示例)

一、低功耗模式介绍

STM32三种低功耗模式:

睡眠模式   停机模式   待机模式

1、睡眠模式
        只有内核时钟关闭并且停止运行,外设都还在运行。可以通过任意一个中断或者唤醒事件唤醒。这个模式不怎么常用,功耗降低的不怎么明显。

2、停止模式
         所有1.8V供电区域的时钟都被停止, PLL、HIS和 HSE RC振荡器的功能被禁止,内存(SRAM)和寄存器的内容被保留了下来。可以通过任意外部中断进行唤醒(在外部中断寄存器中设置),此模式下被唤醒后单片机先执行外部中断函数,然后接着上次进入停止模式的语句位置继续往下执行。

3、待机模式
           功耗最低的一种模式, 该模式关闭电压调节器,整个1.8V供电区域被断电, PLL、HSI和 HSE 振荡器也被断电,只有备份寄存器和待机电路维持供电,可以说是该断的电都断了。
       可以通过WKUP引脚上升沿、RTC闹钟事件、复位引脚、看门狗复位这几种固定的方式进行唤醒,这个模式的唤醒跟复位差不多,唤醒后除了电源控制/状态寄存器(PWR_CSR)内容还在,其他所有寄存器都被复位了,程序会从头开始执行。从待机模式唤醒后的代码执行等同于复位后执行。

4、快速应用了解

RTC闹钟唤醒实质还是外部中断唤醒(STM32F103RB的外部中断线17),只不过是片内处理了。
在停止模式下,如果在进入该模式前ADC和DAC没有被关闭,那么这些外设仍然消耗电流。通
过设置寄存器ADC_CR2的ADON位和寄存器DAC_CR的ENx位为0可关闭这2个外设。(这段文字摘自STM32中文参考手册,就是说如果使用了ADC,那么进入低功耗之前先关闭ADC。)
停止模式唤醒之后,默认使用的是HSI 8M的时钟,需要重新初始化时钟和外设
进入低功耗之前可以将引脚全部配置为浮空输入或者Anglog模式,这样最省电,如果你是用STM32CUBEMX,在这里可以看到这么一项配置就是将没有用到的引脚配置为了Anglog模式:

对于特殊的一些唤醒方式,例如串口接收中断,让串口收到数据的时候自动唤醒单片机这种方式,其实还是使用的外部中断,一般是在进入低功耗之前先将串口的引脚重置并配置为外部中断引脚,外部中断触发唤醒后,再将引脚配置回串口即可。
设置闹钟事件时间的时候,要看芯片支持的是秒中断还是时间中断。比如10x系列的,要通过当前的RTC值去设置下次的闹钟,40X系列的直接可以设置时间。

(二)唤醒STOP

  开启外部中断

进入stop模式

覆写外部中断回调函数

main函数

通过检测到外部中断去唤醒MCU。验证从进入STOP模式到退出STOP模式是没有问题的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值