概述
前言:在调试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串口通信出现乱码的解决方案所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复