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
}
}