管理提醒: 本帖被 xoom 执行加亮操作(2013-12-22)
作为新手很是悲催,为了这个问题,研究了很久,终于能正常跳入中断处理程序
[attachment=4273]为了这个调试的箭头真是不容易,在此庆贺一下
一、cpu的初始化
1、开启vic
mrc p15,0,r0,c1,c0,0
orr r0,r0,#(1<<24)
mcr p15,0,r0,c1,c0,0
2、堆栈初始化
LDR R0, =Stack_Top
MSR CPSR_c, #Mode_UND:OR:I_Bit:OR:F_Bit
MOV SP, R0
SUB R0, R0, #UND_Stack_Size
MSR CPSR_c, #Mode_ABT:OR:I_Bit:OR:F_Bit
MOV SP, R0
本部分内容设定了隐藏,需要回复后才能看到
rVIC1INTENABLE |=1;
rVIC1INTENABLE |=2;
rVIC0VECTADDR0 =addr; //中断向量的地址
rVIC0VECTADDR1 =addr;
rVIC1VECTADDR0 =addr;
rVIC1VECTADDR1 =addr;
}
中断函数
void __irq Interrupt(void)
{
if(rEINT0PEND&0x01)
rUTXH0='1';
else if(rEINT0PEND&0x02)
rUTXH0='2';
else if(rEINT0PEND&0x04)
rUTXH0='3';
else if(rEINT0PEND&0x08)
rUTXH0='4';
else if(rEINT0PEND&0x10)
rUTXH0='5';
rEINT0PEND=0xffffffff;
rGPKDAT=~rGPKDAT;
rVIC0ADDRESS =0x0;
rVIC1ADDRESS =0x0;
}
[ 此帖被diandianzd在2012-08-03 20:32重新编辑 ]