以下,只表示在数据正确接收的情况下。假设接收全部的数据为a,b,c 以0x0d 0x0a结尾
第一次进中断,第一个数据为a 。将会被存入USART_RX_BUF[0]中,之后由于USART_RX_STA++;自加。此时USART_RX_STA = 0000 0000 0000 0001
第二次进中断,第二个数据为b。将会被存入USART_RX_BUF[1]中,之后由于USART_RX_STA++;自加。此时USART_RX_STA = 0000 0000 0000 0010
第三次进中断,第三个数据为c。将会被存入USART_RX_BUF[2]中,之后由于USART_RX_STA++;自加。此时USART_RX_STA = 0000 0000 0000 0011
第四次进中断,第四个数据为0x0d。接着会进入这个地方
此时USART_RX_STA|=0x4000; 既USART_RX_STA = 0000 0000 0000 0011|0100 0000 0000 0000 = 0100 0000 0000 0011
第五次进中断,第五个数据为0x0a,接着会进入这个地方
此时USART_RX_STA&0x4000为 0100 0000 0000 0011 & 0100 0000 0000 0000 为1,接着判断接收到的数据是不是0x0a,如果是,则USART_RX_STA|=0x8000;既USART_RX_STA =
0100 0000 0000 0011 | 1000 0000 0000 0000 =1100 0000 0000 0011 接收完成了,第15位表0x0a 第14位表0x0d 第0-13位表接收到的有效数据,为3位。接受完成。