USART串口通信出现乱码的解决方案

前言:在调试485通信的过程,出现能够收发数据但数据乱码的问题,初步考虑是通信双方波特率不对或者外部晶振配置的问题。

出现问题的原因所在:一些官方的函数库默认使用8MHz晶振,可以通过更改宏配置12MHZ或者16MHz晶振。

运行环境:

硬件:STM32F407VET6(外部晶振16M)

软件:KEIL5、SSCOM串口调试助手

通信配置

- Word Length = 8 Bits

- Stop Bit = One Stop bit

- Parity = None

- BaudRate = 115200 baud

1、波特率设置问题

首先,可以通过示波器抓取数据收发引脚的数据信号,计算其波特率是否与配置的波特率是否大概一致。

简单点的话可以试着降低波特率改成9600和4800但问题依旧没有解决,接着如下处理:

2、外部晶振配置问题

第一步:修改外部晶振的值HSE_VALUE 

将宏定义 #define  HSE_VALUE       ((uint32_t)8000000)  修改为  #define  HSE_VALUE     ((uint32_t)16000000)

修改的文件在 stm32f4xx_hal_conf.h,如下图:

第二步:修改PLLM

具体的配置根据开发板的时钟配置进行更改,如下图:

 参考链接:

(20条消息) STM32F407修改程序将外部25M晶振修改为8M(标准库、HAL库)_xiaozhou.的博客-CSDN博客_f407晶振

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值