在UART中断服务程序中需要清掉UART Status Register 1 (UARTx_S1) [RDRF] bit。否则会再次进入UART中断服务程序。清除UARTx_S1 [RDRF]位的办法:读取S1寄存器的值,再读出UARTx_D寄存器的数值。
例程如下:
/* Read and save the S1 value */
status = UART_S1_REG(channel);
/* Check to see if the rx full flag is set */
if (status & UART_S1_RDRF_MASK)
{
/* Read data register to clear the flag */
temp = UART_D_REG(channel);
}
祝顺利。