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