MCU进入低功耗之后,以极低的功耗维持着系统“活着”,但是醒过来是需要一定条件的,比如定个“闹钟”,按键“按一下”等,目前常用的“正常的”唤醒方式有以下几种:
1、RTC定时唤醒;
2、外部中断唤醒(按键或者通讯唤醒);
3、特殊唤醒引脚唤醒(某些引脚具有专门的唤醒功能)。
下面,我们再来看一看如何通过RTC和外部中断唤醒MCU。
1、RTC定时唤醒
依然是从手册中我们可以看到,所有的RTC时间都可以把MCU从低功耗模式中唤醒:
介绍使用RTC的定时功能实现,定时1S唤醒一次,使用cubemx进行对RTC进行配置:
生成代码的时候,勾选这个选项,可以把不用的引脚配置为模拟输入模式,降低功耗:
RTC的配置如图,使能RTC,1S中断唤醒一次:
接着,我们在while(1)里面写下面的代码,通过串口打印出唤醒信息,实际上代码在执行的时候,遇到红框出的低功耗入口函数,代码会停止在这里,当遇到唤醒信号的时候,会继续往下执行,一般进入STOP模式之前我们会先配置好唤醒所需要的条件,相应的IO等进入低功耗状态,唤醒之后,把硬件相关的重新初始化,才可以正常使用。
外部中断也可以用来唤醒MCU,需要提供一个下降沿用以把MCU从低功耗中唤醒。
我们就直接使用串口的RX作为外部中断引脚唤醒,使用串口3的RX也即是PB11引脚,关于外部中断这里不做具体介绍了,需要的小伙伴可以私信我,专门出一期介绍。
需要先配置IO口为外部中断模式:
在进入低功耗模式之前一定要先配置,这样才能够正常唤醒。