NOTE:当发生 overrun error 时,需要读取 URXHn 寄存器。否则,即使清空 UERSTATn 中的 overrun 标志位,当再次接收到数据时同样将产生 overrun error。
UART BAUD RATE DIVISOR REGISTER在串口模块中有3个串口波特率分频寄存器,分别是 UBRDIV0,UBRDIB1 和 UBRDIV2。
存储在波特率分频寄存器(UBRDIVn)中的值如下确定串行 Tx/Rx 的时钟频率:
分频因子的范围1~(2^16^-1),并且 UCLK 应该比 PCLK 小。
For example:如果波特率是115200 bps 并且 PCLK 和 UCLK 是 40 MHz, UBRDIVn 如下确定:
UBRDIVn = (int)(40000000/(115200 * 16)) - 1 = (int)(21.7) - 1 = 21 - 1 = 20