下图是STM32 USART的框图,在图的右上方可以看到,从USART_RX到来的数据通过Receive Shift Register被转换为并行格式,只有当收到一个完整的字节后,Receive Shift Register的内容才被送到Receive Data Register (RDR),程序可以通过RDR读出收到的数据字节。
只要你的程序在下一个数据字节到来之前读出Receive Data Register (RDR),就不会产生数据丢失。
问题的关键是:USART的内部有2个寄存器,一个用于接收数据,另一个用于读取数据,而你把这2者想象为一个寄存器了。
|