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

问题描述 投票:1回答:1

背景:我试图使我的嵌入式应用程序在没有__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之外的所有中断?

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

c embedded interrupt cortex-m3 lpc
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.