我的程式改动如下,无法进入中断,但是可以进入TIMER0中断,不知怎么回事啊 原有版本为光碟上的例子 IRQ.S(文件名)
;/*Uart0接收中断*/ ;/*Uart0 Interrupt*/ Uart0_Handler HANDLER UART0_Exception
TARGET.C void VICInit(void) //中断向量初始化 { extern void IRQ_Handler(void); extern void Timer0_Handler(void); extern void Uart0_Handler(void); VICIntSelect = 0x00000000; // 设置所有的通道为IRQ中断 VICIntEnClr = 0xffffffff; VICDefVectAddr = (uint32)IRQ_Handler;
VICVectAddr0 = (uint32)Timer0_Handler; VICVectCntl0 = (0x20 | 0x04); VICVectAddr1 = (uint32)Uart0_Handler; // 设置UART0向量地址 VICVectCntl1 = 0x20 | 0x06; // UART0分配到IRQ slot1,优先级次之 VICIntEnable = (1 << 4| 1 <<6 ); //使能中断TIMER0和UART0中断 }
void UART0_Exception (void)定 //中断服务 { uint8 i; uint8 rcv_buf[8]; // UART0_SendStr("Start Uart0 interrupt
"); if ((U0IIR & 0x0F) == 0x04) //确认是否有新的数据到 // rcv_new = 1; // 设置接收到新的数据标志 for (i=0; i<8; i++) { rcv_buf= U0RBR; // 读取FIFO的数据,并清除中断 } //rcv_buf[0]=U0IIR; VICVectAddr = 0x00; // 中断处理结束 }
|