如果我用disable interrupt和enable interrupt包裹wait forinterrupt(WFI)。你说WFI还能被唤醒么?有思考过么?
昨晚拿STM8L151K4的开发板,实际测试下来。这样的用法是完全没问题的。由此我猜测芯片内部,core应该会专门有一根信号线唤醒sleep状态的core,这根信号不受interrupt disable影响。
这个实验对控制睡眠唤醒sleep/resume是很有用的,因为你会期望睡眠唤醒sleep/resume按照单线程处理,否则你将没有机会拦截resume过程,因为resume时,core会把等待已久的WFI指令运行完,然后就跳到了中断ISR去了,你是完全没机会拦截的。这样导致sleep/resume没有统一的出入口,唤醒时需要做的必要的恢复工作就没机会实现了
本实验将被延伸到HALT指令。为接下来的功耗优化打下基础。

本文通过STM8L151K4开发板的实际测试,验证了即使在disableinterrupt状态下,waitforinterrupt(WFI)仍能被唤醒。这表明核心处理器可能有一条独立于中断禁用的唤醒路径。此发现对于实现精确的睡眠/唤醒控制至关重要。
169

被折叠的 条评论
为什么被折叠?



