我用LPC2103做串口通讯,中断接收。调试时能进中断,但是中断函数里的
if ((U1IIR & 0x0F) == 0x04) 这个判断一直为非,所以就直接跳到中断函数里下面的for循环执行了。
中断函数为:
void IRQ_UART1(void)
{
uint8 i;
if ((U1IIR & 0x0F) == 0x04)
rce_new =1;
for(i = 0;i<8; i++)
rcv_buf[i] = U1RBR;
VICVectAddr = 0x00; //中断处理结束
}
主要寄存器设置是这样:
U1FCR = 0x81;
U1IER = 0x01;
IRQEnable();
VICIntSelect = 0x00000000;
VICVectCntl0 = 0x20 | 0x07;
VICVectAddr0 = (uint32)IRQ_UART1;
VICIntEnable = 1 << 0x07; |