USART框图
右上角这一块,是串口的数据寄存器,发送或接收的字节数据就寄存在这个地方。这里有两个寄存器,一个数TDR(Transmit DR)发送数据寄存器,另一个是RDR(Receive)接收数据寄存器。这两个寄存器占用同一个地址,在程序上只表现为一个寄存器,就是数据寄存器DR(Data Register),但是在实际硬件中分成了两个寄存器。其中TDR是只写的,RDR是只读的。当进行写操作时,数据就写入了TDR,当进行读操作时,数据就从RDR读出来。
下边是两个移位寄存器,发送移位寄存器的作用就是,把一个字节的数据一位一位的移出去,正好对应串口协议波形的数据位。关于移位寄存器的工作状态,举个例子,比如某时刻给TDR写入了0x55,,在寄存器里就是二进制存储0101 0101,