波特率寄存器:USART_BRR
串口的时钟源:fck
串口的时钟源fck进行分频的系数:USARTDIV
USART 1的时钟来源于APB2
USART 2-5的时钟来源于APB1
STM32波特率寄存器USART_BRR,如下:
知道了波特率和fck时钟频率的大小,那么通过上式便可以计算出USARTDIV的具体大小,然后再通过USART的值大小对波特率寄存器进行设置。
将整数部分m(27 = 0x1B)直接写入USART_BRR的后12位部分;将小数部分n乘以16后得到的整数值(如0.75 x 16 = 12 = 0xC)写入USART_BRR前4位部分,最后USART_BRR的值为0x1BC。
在数据的传输中,信号可能受到一些干扰而产生一些抖动,如下图。如果接收端只对这些信号数据采样一次,那么它有可能采样到的是抖动的不准的数据,进而使数据传输不准确,
所以接收端在采样数据线上的数据,通常都要采样多次,然后通过比较获得准确的数据。
所以为什么在计算波特率的公式中要乘以16。
原文:https://www.cnblogs.com/aiziyoudexinxin/p/13813679.html