做电池供电的嵌入式项目时,不少人都遇到过这种尴尬:
反复核对了唤醒源配置,引脚、中断、NVIC全检查了一遍,单片机进入低功耗后还是彻底“睡死”,怎么都唤不醒。
其实很多时候问题根本不出在唤醒源本身,而是这些容易被忽略的隐性环节。

1. 悄悄触发的SysTick悬起中断
不少人进入低功耗前会屏蔽中断,却没注意SysTick的中断标志悄悄被置1。
哪怕你没主动开SysTick中断,这个悬起的标志也会让MCU刚执行WFI指令就立刻退出,看似是“进不去也唤不醒”,本质是被系统滴答悄悄打断了低功耗流程。
2. 没稳住的低速时钟根基
依赖LSE/32KHz晶振的RTC定时唤醒,最容易栽在这步。
PCB走线过长、负载电容不匹配,甚至晶振虚焊,都会让低速时钟停振。
你在代码里配好了所有唤醒参数,可底层计时的时钟根本没跑,自然等不到唤醒触发信号。
3. 没守住的备份域供电
很多人忘了配置PWR_CR1的RRS位,没给RTC和SRAM2保留供电。
进入低功耗后备份域直接掉电,之前写好的唤醒计数、配置参数直接归零,唤醒逻辑相当于被悄悄清空了。
4. 被误关的采样时钟
部分STC8、STM32的外部中断唤醒,需要依赖主时钟做IO电平采样。
你为了极致省电提前关了主时钟,哪怕引脚电平跳变,中断检测逻辑根本收不到信号,自然唤不醒。
下次遇到这类问题,别死磕唤醒源配置,先从这几个隐性环节排查,往往能快速定位问题。
本文凡亿教育原创文章,转载请注明来源!

扫码关注












































