说到串口,自然离不开波特率,波特率又跟系统时钟有关,所以首先就先看下STM32的串口波特率怎么设置。
STM32有数个串口,每个串口都有一个自己独立的波特率寄存器USART_BRR,通过设置该寄存器就可以达到配置不同波特率的目的,由于STM32采用了分数波特率,所以STM32的串口波特率设置范围很宽,而且误差很小。
由上表可知:USART_BRR的最低4位(位[3:0])用来存放小数部分DIV_Fraction,紧接着的12位(位[15:4])用来存放整数部分DIV_Mantissa,最高16位保留。
STM32的串口波特率计算公式如下:
上式中,Fpclk是给串口的时钟(PCLK1用于USART2、3、4、5,PCLK2用于USART1,以前说过,PCLK1是由系统时钟分频得来,最大36MHZ,PCLK2