This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM365 中断为何 中断控制器中的 EINT0和 EINT1 为何不起作用?



DM365 中断为何 中断控制器中的 EINT0和 EINT1 为何不起作用?

我调试发现,我把 EINT0和 EINT1设为0,都会产生中断。

中断测试代码如下:为什么我的中断不能过滤,不管什么中断都产生了。还有,开中断后,DiableIRQ为什么不能关中断?0x01C48000到底设置中断是否起作用?


      DiableIRQ();

       
        Int_Reg = (INTC_REGS*)0x01C48000;
       
    // Mask all interrupts
        Int_Reg->INTCTL = 0x4;
        Int_Reg->EABASE = 0x0;
        Int_Reg->EINT0 = 0x0;
        Int_Reg->EINT1 = 0x0;       
   
       
    // Clear all interrupts
        Int_Reg->FIQ0 = 0xFFFFFFFF;
        Int_Reg->FIQ1 = 0xFFFFFFFF;
        Int_Reg->IRQ0 = 0xFFFFFFFF;
        Int_Reg->IRQ1 = 0xFFFFFFFF;
       
        Int_Reg->INTCTL = 0x0002;
        Int_Reg->EABASE = 0x0000;
        Int_Reg->EINT0 = 0x0;
        Int_Reg->EINT1 = 0x0;    
       
        EnableIRQ();



其中

void EnableIRQ(void) {
        int r0;
        __asm {
                MRS             r0, cpsr
                EOR             r0, r0, #0xC0
                MSR             cpsr_c, r0
                NOP
                NOP
        }
       
}


void DiableIRQ(void) {
        int r0;
        __asm {
                MRS             r0, cpsr
                ORR             r0, r0, #0xC0
                MSR             cpsr_c, r0
                NOP
                NOP
        }
       
}