热度 1| |||
WFI (Wait For Interrupt) / WFE (Wait For Event)都可以让处理器进入低功耗模式。
-------- 进入 --------
WFI
WFI指令在执行后立即进入低功耗模式。
WFE
WFE指令在执行后会先检查事件寄存器的状态,如果寄存器为1,则清零寄存器并直接返回,不进入低功耗模式,如果寄存器为0,则进入低功耗模式。
-------- 唤醒 --------
| WFE唤醒 (中断/事件均可唤醒) | ||||||
| SEVONPEMD | EXTI(通道模式) | NVIC(通道状态) | 唤醒效果 | Note | ||
| 1 | 中断 | 开启 | 中断唤醒,执行中断函数,EXTI中断标志置位 | 中断优先级大于当前优先级且中断未被PRIMAKS/BASEPRI屏蔽,才执行 | ||
| 0 | 中断 | 开启 | 中断唤醒,执行中断函数,EXTI中断标志置位 | 中断优先级大于当前优先级且中断未被PRIMAKS/BASEPRI屏蔽,才唤醒 | ||
| 1 | 中断 | 禁止 | 中断唤醒,不执行中断函数,EXTI和NVIC中断标志置位 | |||
| 0 | 中断 | 禁止 | 不唤醒,EXTI和NVIC中断标志置位 | |||
| 0 | 事件 | 禁止 | 事件唤醒,无pending标志位 | 只能被事件唤醒,中断无法唤醒,但如果中断产生,EXTI/NVIC中断标志也会置位 | ||
| WFI唤醒 (仅中断可以唤醒) | ||||||
如果中断被屏蔽,处理器也会被唤醒,但中断会被挂起,挂起状态会使下次WFI指令无法进入休眠。 | ||||||
/2