我是靠谱客的博主 痴情茉莉,最近开发中收集的这篇文章主要介绍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晶振

最后

以上就是痴情茉莉为你收集整理的USART串口通信出现乱码的解决方案的全部内容,希望文章能够帮你解决USART串口通信出现乱码的解决方案所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(530)

评论列表共有 0 条评论

立即
投稿
返回
顶部