STM32F4的USART1和USART6都是挂在RCC_APB2Periph_USART1时钟下,168MHZ下,USART1和USART6挂的APB2主频是84MHZ,uart3等挂的是APB1主频是48MHZ。默认情况下的时钟树如下图
所以在默认情况下,UART2 ~ UART5波特率在1200可以正常,USART1和USART6会通信失败。
解决方法:
我们将APB2的频率降到48Mhz,调用void RCC_PCLK2Config(uint32_t RCC_HCLK)该函数,如下图
函数传入参数
结合之前的时钟树,将APB2的主频降低。
测试结果显示将APB2主频降到48MHZ以后,1200波特率可稳定工作。