1、一般我们做开发大多都是选择停机模式,因为停机模式功耗较低。而且任一中断或事件都能唤醒,待机模式虽然功耗最低,也就差10个微安,但是只有特定的唤醒脚可以唤醒,实时性不是很好。
2、我们用停机模式也能降到10几个ua,实时性又好,干嘛不用呢。 要怎么做才能把停机模式功耗进一步降低呢。
3、局限性:用内部时钟lsi,大小固定导致wakeup time base 被限制。 wakeup time最大=0.41ms*655350xffff=26.869s,可能达不到休眠时间要求。
4、另一种方法:改hal_rtcex_setwakeuptimer_it(rtchandle, 2, rtc_wakeupclock_ck_spre_16bits);
5、这里rtc_wakeupclock_ck_spre_16bits是设置cr寄存器中的低三位,唤醒时钟选择,这里选择1hz,2表示工作2s后进入唤醒中断,这个数随便改,改成多少就是休眠多少时间。
6、串口中断唤醒唤醒机制:在mcu进入stop状态后,不能直接通过uart等外设唤醒,在mcu进入stop前将rx脚设为exti模式,并使能对应的中断。唤醒后重新初始化串口、配置时钟。