void UART0_ISR(void)<br />{<br /> unsigned long ulStatus;<br /> uint8 temp=0;<br /> ulStatus = UARTIntStatus(UART0_BASE, true); //读取已使能的串口0中断状态<br /> UARTIntClear(UART0_BASE, ulStatus); //清除当前的串口0中断<br /><br /> if((ulStatus & UART_INT_RX) || (ulStatus & UART_INT_RT)) { //接收中断<br /> while( UARTCharsAvail(UART0_BASE) ==true) {<br /> temp= (uint8)UARTCharNonBlockingGet(UART0_BASE) ;<br /> QueueWrite(Uart0_Rec_Queue,temp );//FIFO中的数据入队列<br /> }<br /> }<br /> ulStatus = UARTIntStatus(UART0_BASE, true); //读取已使能的串口0中断状态<br />}<br /><br /><br />我用keil调试,在串口中断里设定了一个断点,当接收到一个字符时产生了中断,然后我单步一直到最后读取的ulStatus为0,再单步,可是这时并没有跳出中断,而是又从串口中断程序开始的地方执行,这时读取的ulStatus一样为0, 这样两次才能完成一次中断。<br />这是配套光盘的例程啊<br /> |
|