之前,用STM32F407的芯片做了串口usart6通讯,波特率调整到3.9M可以正常通讯,发送的数据也都对。现在换STM32F412后发现最大频率的串口波特率只能到3.1M。再上去发出的数据频率就降低到几十KHZ。 后来调试,发现在串口初始化函数里usrat6 问题一、我试着设置过RCC_PCLK2Config(RCC_HCLK_Div1);但是不起作用,也曾修改过apbclock = RCC_ClocksStatus.HCLK_Frequency;但是结果还是不对,我想问问格纹技术员大大,这个怎么处理啊,手册上说过可以达到12.5M 的速度呢。怎么可以实现呢? |
我刚才找了个块STM32F412的开发板对UART6进行了测试,结果符合数据手册里标定的数据。 当过采样选择8时,波特率达到12.5MBPS,当过采样选择16时,波特率达到6.25MBPS是没有问题的,APB2的时钟配置为100MHz. huart6.Instance = USART6; huart6.Init.BaudRate = 6250000; huart6.Init.WordLength = UART_WORDLENGTH_8B; huart6.Init.StopBits = UART_STOPBITS_1; huart6.Init.Parity = UART_PARITY_NONE; huart6.Init.Mode = UART_MODE_TX_RX; huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart6.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart6) != HAL_OK) { Error_Handler(); } 你可以使用CubeMx进行配置,然后添加自己的应用代码,这样比较方便而简单。你的问题可能出在时钟配置这块。