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這個值是夠放的。