即使禁用了所有中断并清除了待处理的中断,__ WFI()也不会休眠-LPC18XX系列

时间:2018-11-10 18:40:13

标签: c embedded interrupt cortex-m3 lpc

背景:我试图在没有__WFI()的CAN活动时使我的嵌入式应用程序进入睡眠状态,然后在接收到CAN中断时将其唤醒。在进入睡眠模式之前,我禁用所有中断并在NVIC寄存器中清除其未决状态。

要开始,现在我只是想确保在禁用所有中断后可以永远睡觉。

for(int i = 0; i < IRQ_MAX; i++)
{
    IRQ_ClearPending((IRQ)i);
    IRQ_Disable((IRQ)i);
}
__DSB();
__ISB();
__WFI();

MCU_Reset();

我检查了NVIC寄存器,并将它们全部设置为0,这意味着所有中断都被禁用,并且没有待处理的中断。但是,每当我执行WFI(等待中断)指令时,它对我来说都是NOP。

为什么我不能进入睡眠模式?我是否真的必须以某种方式禁用所有外设并在其源处禁用中断,或者是否有办法掩盖所有中断减去CAN的中断?

谢谢您的时间。让我知道我有什么办法可以澄清这个问题。

1 个答案:

答案 0 :(得分:-1)

检查不正确的外部异常终止,这不会立即导致异常。

相关问题