TI中文支持网
TI专业的中文技术问题搜集分享网站

DM365裸跑中断问题?

DM365裸跑中断

DM365上裸跑,现在无法进入中断服务程序,能否给出实现中断的步骤和例程?

1, CPSR 全能中断, 在特权模式下能设置它吗?如何用C语言设置
2, 特权模式下是否影响中断的产生?3, IRQ的服务程序地址可以放什么地方?必须是内部RAM的某一处吗?
4, 跳转,还是地址? 中断向量表存放的是地址还是某条跳转指令?是不是不同的工作模式,会有所不同。如果是地址,那为什么 中断向量表 需要设置 每条记录大小,4bytes,8bytes,16byutes…

Bill Lee:

问题已经解决了。

但 为什么中断 不是按照 DM365 的文档说明的进行硬跳转, 跳转的EABASE + IRQ_NUM * SIZE,而是 跳转到 0x18 , 

是不是跟我选择的工作模式有关。  

Bill Lee:

中断测试代码如下:为什么我的中断不能过滤,不管什么中断都产生了。还有,开中断后,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 |= 0x001 << 12;                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        }       }

赞(0)
未经允许不得转载:TI中文支持网 » DM365裸跑中断问题?
分享到: 更多 (0)