void UART0_Exception(void) { uint8 rcv_buf[14],i,IIR; VICIntEnClr = 1<<6; VICVectAddr = 0;//中断处理结束 OS_ENTER_CRITICAL(); OS_EXIT_CRITICAL(); while(((IIR = U0IIR) & 0x01) == 0) { switch(IIR & 0x0e) { case 0x02:break; //THRE中断 case 0x04: //接收数据中断 for(i=0;i<14;i++) //读取FIFO的数据,并清除中断标志 { rcv_buf = U0RBR; } for(i=0;i<14;i++) //读取FIFO的数据,并清除中断标志 { U0THR = rcv_buf; } break; case 0x06:break; //接收线状态 case 0x0c: // U0IER = U0IER&(~0x01); //字符超时指示,禁止接收字符超时中断 break; default: break; } VICIntEnable = (1 << 6); } }
程序如上,我设置的FIFO为14个字符,实验中,当连续发送14个字符时,一切正常,但是连续发送的字母不是14个时,程序就死在取指中断处了。我不知道到底怎么回事,想了半天也想不通,高手帮帮忙吧 |