首先了解STM32串口发送数据的简单过程,如下图所示。
发送: 软件将数据写到USARTx->DR里面,硬件自动把USARTx->DR里面的数据并行转移到“发送移位寄存器”,然后硬件自动将发送移位寄存器中的数据通过TX引脚串行发送出去。
接收: RX上有数据过来,则先将数据一位一位的放到“接收移位寄存器”里面,收满一个字节后,硬件自动将“接收移位寄存器”里面的数据并行转移到USARTx->DR里面。
1. USART_FLAG_RXNE—接受数据寄存器非空标志位(Receive data register not empty flag)
当RDR移位寄存器中的数据被转移到USART_DR寄存器中,该位被硬件置位 (表示接受到一个字节) 。如果USART_CR1寄存器中的RXNEIE为1,则产生中断。对USART_DR的读操作可以将该位清零。RXNE位也可以通过写入0来清除,只有在多缓存通讯中才推荐这种清除程序。
0:数据没有收到;
1:收到数据,可以读出。
2. USART_FLAG_TXE —发送数据寄存器空标志位(Transmit data register empty flag)
当TDR寄存器中的数据被硬件转移到移位寄存器的时候,该位被硬件置位 (表示发送数据寄存器为空,可以继续写入数据。注ÿ