从配置中断但禁用 Cortex M 系列的低功耗模式唤醒

Wake from low power mode with interrupts configured but disabled Cortex M series

Cortex-M 系列 MCU 的一项功能是能够从低功耗模式(睡眠或深度睡眠或其他 MCU 特定模式)唤醒并配置中断但禁用?

进入低功耗模式的机制是执行WFI指令。

我使用的来自 STM 和 Renesas 的 MCU,如果中断配置正确并且即使通过 cpsid 指令禁用了所有中断,也会通过中断从低功耗模式唤醒。

我正在尝试确定这是我对所有基于 Cortex M 系列的 MCU 所期望的,还是仅特定于某些 MCU 供应商。

只要您使用PRIMASK禁用ALL中断,每个ARM Cortex-M都会以这种方式工作。这就是 CMSIS 的 __disable_irq() 所做的。根据文档,使用 BASEPRI 提高优先级不会导致优先级不足的中断唤醒芯片。

看这里 - http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0552a/BABFEFIG.html

Operation

WFI is a hint instruction that suspends execution until one of the following events occurs:

  • a non-masked interrupt occurs and is taken
  • an interrupt masked by PRIMASK becomes pending
  • a Debug Entry request.