0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

知道STM32串口通信乱码要怎么处理吗

MCU开发加油站 来源:CSDN技术社区 作者:aizaiyueye 2021-06-16 15:35 9181次阅读

STM32串口通信以及温度采集搞定,其中主要遇到STM32系列单片机时钟树的问题,串口通信遇到串口调试助手能够接收到数据但出现乱码现象。

开始一直以为是串口配置和程序代码问题,因为是第一次上电在线调试STM32板子,后面主要查串口波特率配置和收发函数程序段,如下图:

c66b74cc-cb60-11eb-9e57-12bb97331649.png

波特率设置成115200没问题,试着降低波特率改成9600和4800但问题依旧没有解决,紧接着如下处理:

c6a06ae2-cb60-11eb-9e57-12bb97331649.png

将重定向函数注释,单独写串口发送字节和字符串函数,依旧失败。最后锁定到系统时钟配置上,由于手上的STM32开发板改用了12M的晶振,根据单片机时钟树的理解和解读,一般采用外部时钟HSE,系统时钟配置成72M,8*9=72,,12*6=72,对于 SYSCLK、HCLK、PCLK2、PCLK1

这四个时钟的配置一般是:PCLK2 = HCLK = SYSCLK=PLLCLK = 72M,PCLK1=HCLK/2= 36M。UART1挂载在APB2总线,而PCLK2 = HCLK = SYSCLK=PLLCLK = 72M,

c6e61736-cb60-11eb-9e57-12bb97331649.png

因此在system_stm32f10x.c文件中的setsysclockto72()函数中,(system_stm32f10x.c文件实现了 STM32的时钟配置,操作的是片上的 RCC这个外设统在上电之后,首选会执行由汇编编写的启动文件,启动文件中的复位函数中调用systemInit 函数就在这个文件里面定义。systemInit 函数默认调用setsysclockto72()配置系统时钟,系统的时钟就被初始化成 72M。)这样便将系统时钟配置成了72M,否则为12*9=108M。但测试运行仍然接收到乱码。

继续找问题所在,查看 在stm32f10x.h里,有下面这段代码

c782c3d8-cb60-11eb-9e57-12bb97331649.png

原因是库使用默认8MHz晶振,可以通过宏使用25MHz或12M晶振。具体定义在stm32f10x.h文件中,HSE_VALUE,一开始定义成了8000000,改成12000000搞定,串口通信显示正常。

版权声明:本文为CSDN博主「aizaiyueye」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/aizaiyueye/article/details/79049816

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6044

    文章

    44640

    浏览量

    639939
  • STM32
    +关注

    关注

    2275

    文章

    10932

    浏览量

    358312
  • 串口通信
    +关注

    关注

    34

    文章

    1628

    浏览量

    55845
  • 函数
    +关注

    关注

    3

    文章

    4350

    浏览量

    63135

原文标题:STM32串口通信乱码详细处理方法

文章出处:【微信号:mcugeek,微信公众号:MCU开发加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    相关推荐

    3.5英寸高清智能串口屏 8位MCU并口通信的COG裸屏 或带驱动板232串口通信的智能屏

    3.5英寸高清智能串口屏 8位MCU并口通信的COG裸屏 或带驱动板232串口通信的智能屏
    的头像 发表于 02-18 14:49 76次阅读
    3.5英寸高清智能<b class='flag-5'>串口</b>屏 8位MCU并口<b class='flag-5'>通信</b>的COG裸屏 或带驱动板232<b class='flag-5'>串口</b><b class='flag-5'>通信</b>的智能屏

    RS232串口连接方式及注意事项

    数据交换。 RS-232串口简介 RS-232标准最初由电子工业联盟(EIA)在1960年制定,用于定义串行通信的电气特性、信号定时和数据格式。RS-232串口使用25针的D型连接器(DB-25),但后来更常用的是9针的D型连接
    的头像 发表于 12-10 16:23 2048次阅读

    LS10串口数据库模块外扩SD卡功能

    LS10串口数据库模块外扩SD卡功能
    的头像 发表于 11-23 09:42 280次阅读
    LS10<b class='flag-5'>串口</b>数据库模块外扩SD卡功能

    RS232串口通信中常见问题及解决办法

    RS232串口通信中常见问题及解决办法主要包括以下几个方面: 一、物理连接问题 问题 :串口线未插稳或接口松动。 解决办法 :重新插拔串口线,确保连接牢固。同时检查插头和针脚是否损坏,
    的头像 发表于 11-21 09:32 2396次阅读

    RS232串口通信协议详解

    在计算机硬件和通信领域,RS-232串口通信协议是一个历史悠久且广泛使用的标准。它允许计算机通过串行接口与各种外部设备进行通信,如调制解调器、鼠标、打印机等。 RS-232的历史和定义
    的头像 发表于 11-21 09:24 1608次阅读

    FT232芯片设计的USB转RS232串口原理图

    FT232芯片设计的USB转RS232串口原理图
    发表于 10-21 11:06 7次下载

    快速实现C2000串口程序升级

    电子发烧友网站提供《快速实现C2000串口程序升级.pdf》资料免费下载
    发表于 08-29 10:50 2次下载
    快速实现C2000<b class='flag-5'>串口</b>程序升级

    集特推荐 双网10串口飞腾FT2000商用台式电脑主机

    前段时间为大家分享了国产龙芯、海光、飞腾D2000的商务台式机,它们的共同特点都是单网,1个RS232串口。今天就为大家推荐一款双网、可扩展10串口、14USB接口的飞腾FT200
    的头像 发表于 07-17 16:04 672次阅读
    集特推荐  双网10<b class='flag-5'>串口</b>飞腾FT2000商用台式电脑主机

    用esp32的串口Stm32F407串口通讯,通过TJA转CAN,结果esp32串口读到的一直是自己发的数据,为什么?

    我用esp32的串口Stm32F407串口通讯,通过TJA转CAN。结果esp32串口读到的一直是自己发的数据,各位大神给我看看哪里有问题么
    发表于 06-19 07:00

    485串口可以用can协议吗

    一、引言 随着工业自动化和智能控制技术的发展,通信协议在设备间数据传输和控制中扮演着越来越重要的角色。485串口和CAN协议是两种常见的通信协议,它们在不同的应用场景中发挥着重要作用。本文将对这两种
    的头像 发表于 06-16 09:21 1566次阅读

    STM32做以太网转4串口单核能做吗?

    目前要做一个以太网转4串口透传模块,一个STM32能搞定吗?是不是需要什么内核、?求解~~对内核了解不多,裸机100年
    发表于 05-13 07:27

    stm8串口通信接收数据,如何判断是否接收完毕?

    stm8串口通信接收数据。已有的协议是只有帧头,没有帧尾,最后一个字节是校验和,一帧数据的长度是不确定的,但可以根据第三个字节来判断本次数据的长度,请问怎么判断这帧数据接收完毕,以及怎样做超时处理
    发表于 05-06 07:24

    STM32F030F4串口空闲中断接收不定长数据,发生中断后不知道如何计算接收到的字节数?

    我用STM32F030F4串口空闲中断接收不定长数据,发生中断后不知道怎样计算接收到的字节数。
    发表于 04-03 07:12

    STM32F407VET6串口5的三个引脚TX RX GND跟STM32F103VET6串口5的RX TX GND三个引脚相连后烧毁的原因?

    我把STM32F407VET6芯片的串口5的三个引脚TX RX GND分别跟STM32F103VET6串口5的RX TX GND 三个引脚直接相连后!上电103芯片发烫,烧毁!不
    发表于 03-26 08:03

    stm32L152RCDISCOVER进行串口通信实验接收乱码怎么解决?

    使用stm32L152RCDISCOVER开发板进行串口通信实验为什么接收乱码
    发表于 03-11 07:56