在只开FIQ或IRQ时,都正常,但同时开时,只有FIQ,却没有IRQ,请高手指教,如何才能让其都产生中断. 我的程序如下://T0为匹配0的中断,FIQ T0PR = 0; T0MCR =0x03; T0MR0 =Fpclk/20000; FIQEnable(); //快中断使能 VICIntSelect = VICIntSelect|(1<<4); //FIQ VICIntEnable = VICIntEnable|(1<<4);
T0TCR =0x01; //开计数器 //T1为匹配0的中断,IRQ T1TC = 0; //清T1 T1PR = 0; //预分频 T1CTCR = 0; //T1为定时器 T1MCR = 0x03; //T1MR0匹配后复位,并产生中断 T1MR0 = Fpclk/1000;//初始频率为1000Hz T1TCR = 0x03; //复位
IRQEnable(); //中断使能 VICIntSelect = 0x00; //分配为IRQ VICVectCntl0 = 0x20|0x05; //分配优生级 VICVectAddr0=(uint32)T1MC0;//设置中断地址 VICIntEnable = VICIntEnable|(1<<5); //开T1匹配0中断 T1TCR =0x01; //开计数器
//T1 MR0匹配中断函数 void __irq T1MC0(void) { T1IR = 1<<0 ;//清中断 T1MR0 = Fpclk/500;//设定速度 VICVectAddr=0x00;//向量中断处理结束 }
//FIQ的中断函数 void FIQ_Exception(void) { //while(1); // change it to your code 这一句替换为自己的代码 LEDON(); T0IR =0x01; //清中断标志 LEDOFF(); }
|