之前,用STM32F407的芯片做了串口usart6通讯,波特率调整到3.9M可以正常通讯,发送的数据也都对。现在换STM32F412后发现最大频率的串口波特率只能到3.1M。再上去发出的数据频率就降低到几十KHZ。 后来调试,发现在串口初始化函数里usrat6用到这条if语句,PCLK2的时钟只有50M导致最后USARTx->BRR里的值不对。对照STM32f407,发现我是在主频168M的条件下,导致这里PCLK2的时钟有84M算的结果可以满足3.9M的波特率。 问题一、我试着设置过RCC_PCLK2Config(RCC_HCLK_Div1);但是不起作用,也曾修改过apbclock = RCC_ClocksStatus.HCLK_Frequency;但是结果还是不对,我想问问格纹技术员大大,这个怎么处理啊,手册上说过可以达到12.5M 的速度呢。怎么可以实现呢? |
stm32f407进入boot里,通过DFU更新程序,没有识别到usb设备
STM32F4作为SPI从机,主机发送完数据后,从机没有正确进入中断
STM32F407 USB怎么测试接口的极限速度
大佬们,请教有关串口通信问题
STM32F407ZGT6物料表面丝印问题
stm32cubeide如何修改芯片型号和启动文件
CDC_Transmit_HS 卡死
修改stm32f407 tim14的ccr1,但是占空比不变?
修改stm32f407 tim14的ccr1,但是占空比不变
STM32IDE工程内如何访问、计算得到当前程序flash已经使用的情况?
当过采样选择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进行配置,然后添加自己的应用代码,这样比较方便而简单。你的问题可能出在时钟配置这块。