Stm32设置串口300波特率
本文以串口4为例子:
在APB1为72MHz的时钟频率下,是设置不了300波特率的,原因在于 Tx/Rx baud = fck / (16 * reg_value) ,reg_value是写进USART_BRR寄存器里。
比如我们要设置300波特率, reg_value = 72000000/ (16 * 300) = 15000,虽然能计算出来,但注意,USART_BRR的前四位存放的是小数部分,后12位存放的是整数部分,所以整数部分最大位4095,根本达不到15000,因此只能改变APB1的时钟频率。
调用 RCC_PCLK1Config(RCC_HCLK_Div4); 把72MHz除于4 等于18MHz, reg_value = 18000000/ (16 * 300) = 3750 3750这个值是够放的。