STM32
直播中

麦特拉布

12年用户 1044经验值
私信 关注
[问答]

如何解决STM32发送的数据与串口助手上面显示数据不一致的问题?

如何解决STM32发送的数据与串口助手上面显示数据不一致的问题?

回帖(1)

戴双宝

2021-12-9 11:15:21
问题描述:

  STM32发送的数据与串口助手上面显示的数据不一致
硬件平台:STM32F4的主控板
参数配置:串口波特率115200,无校验,一位停止位
STM32初始化的波特率是115200(然而并不是115200)
  问题分析:

  经过调试发现:
板子上的晶振不是常见的8M晶振,而是10M晶振,这就导致经过初始化之后的主时钟并不是168M,然后在经过倍频、分频后,导致USART外设的时钟并不是自己期望的时钟。最终导致的结果就是,我以为我初始化的时115200的波特率,其实并不是,进而导致发送的数据与显示的数据不一致
  解决方案:

  1> 在“stm32F4xx.h”中找到

  

  

将8000000改为10000000,高速外部时钟源改为10M
  2>在system_stm32f4xx.c中找到PLL Parameters配置这一部分,
设置PLL_M、PLL_Q、PLL_N、PLL_P的值使外设的时钟符合自己预期的时钟
其中PLL_M、PLL_Q、PLL_N、PLL_P的作用如图中所示

  

  

  问题扩展:

  经过上面的分频与倍频得到的是系统主时钟源168M,后面的各级时钟的分频系数在哪里配置呢?
  在system_stm32f4xx.c中找到

  

  

这里的HCLK、PCLK2、PCLK1对应图中:

  

  
举报

更多回帖

发帖
×
20
完善资料,
赚取积分