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

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

3天内不再提示

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

MCU开发加油站 来源:CSDN技术社区 作者:aizaiyueye 2021-06-16 15:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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

    关注

    6078

    文章

    45624

    浏览量

    675099
  • STM32
    +关注

    关注

    2313

    文章

    11205

    浏览量

    375144
  • 串口通信
    +关注

    关注

    34

    文章

    1667

    浏览量

    58247
  • 函数
    +关注

    关注

    3

    文章

    4423

    浏览量

    68001

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    智能显示模块串口与单片机连接通信成功,偶尔收到的命令是乱码有哪些什么原因?

    智能显示模块串口与单片机连接通信成功,偶尔收到的命令是乱码有哪些什么原因?
    发表于 03-17 11:28

    11.0592MHz晶振换成12MHz后单片机串口通讯乱码的原因分析

    真是没想到啊,把11.0592MHz的晶振焊成了12MHz,单片机串口通讯打印全乱码了。明明频率差不多,为什么会导致通讯彻底失败?贸泽科普实验室带大家从串口乱码开始,重新认识晶振。
    的头像 发表于 03-06 09:22 1.6w次阅读
    11.0592MHz晶振换成12MHz后单片机<b class='flag-5'>串口</b>通讯<b class='flag-5'>乱码</b>的原因分析

    STM32驱动串口屏,STM32F103C8T6串口发送指令控制HMI串口

    仅是一部分常用的基础指令,更多更仔细的指令或者函数可以访问陶晶驰资料官网。 硬件和接线 硬件需要一块STM32F103C8T6的开发板,杜邦线诺干,2.4寸串口屏一块 接线 串口STM32
    的头像 发表于 02-10 17:07 709次阅读
    <b class='flag-5'>STM32</b>驱动<b class='flag-5'>串口</b>屏,<b class='flag-5'>STM32</b>F103C8T6<b class='flag-5'>串口</b>发送指令控制HMI<b class='flag-5'>串口</b>屏

    Linux串口操作指南:3步搞定设置,告别乱码与回显干扰

    在 Linux 系统下调试串口(如 RS232/485)时,新手常面临两类典型问题:发送数据出现乱码、终端回显干扰接收结果。实际上,仅需通过系统自带的 stty 指令完成基础配置,配合双终端测试,即可快速实现稳定的串口
    的头像 发表于 02-01 16:52 2403次阅读
    Linux<b class='flag-5'>串口</b>操作指南:3步搞定设置,告别<b class='flag-5'>乱码</b>与回显干扰

    串口调试步骤(适合免驱动的232串口设备)

    密码切换到root超级管理下 apt update 更新插件 apt-get install cutecom 安装系统自带的串口调试工具 cutecom 输入串口测试的指令会弹出一个图形界面如下图 32串口协议测试需要将第2和第
    的头像 发表于 12-17 17:23 1716次阅读
    <b class='flag-5'>串口</b>调试步骤(适合免驱动的232<b class='flag-5'>串口</b>设备)

    UWB650串口测距通信定位模块规格书

    UWB650串口测距通信定位模块规格书
    发表于 11-03 17:40 3次下载

    后台系统显示 “数据乱码”,是通信问题还是软件问题?

    后台系统显示 “数据乱码” 的核心原因是 **“数据的编码格式与解码格式不匹配”** 或 “数据在传输 / 处理过程中被破坏” ,通信问题和软件问题都可能导致,但两者的本质差异在于: 通信
    的头像 发表于 09-23 11:02 1608次阅读

    关于stm32f4zgt6和mspm0g3507串口通信问题

    本人在使用stm32f4zgt6和mspm0g3507串口通信时出现问题,情况如下: m0芯片使用软件超时解析进行数据接收,使用标准库的transmit函数进行数据发送。 stm32使
    发表于 09-01 11:11

    DTU的S485/232串口能够复用吗?

    想问一下,DTU的S485/232串口能够复用吗?就是窗口下面接很多传感器设备那种,主要是传感器数量过大,一个传感器接一台DTU太过于浪费。
    发表于 08-06 06:58

    STM32串口发送数据,USART_FLAG_TC无法置位怎么解决?

    STM32串口发送数据,在经过一段时间的数据发送,大概200ms发送一下,一次发送大概二三十个字节的数据,有可能会发生USART_FLAG_TC不置位的情况,如何解决或者避免?轮询发送,后卡在了
    发表于 07-29 11:44

    串口转网网关有哪些功能应用

    直接接入信息网络的痛点,同时支持多协议解析、边缘计算与安全防护等高级功能。 在工业自动化生产线上,大量设备如 PLC(可编程逻辑控制器)、传感器、仪表等仍采用串口通信,而上位机则是通过以太网进行
    的头像 发表于 07-17 17:10 994次阅读
    <b class='flag-5'>串口</b>转网<b class='flag-5'>口</b>网关有哪些功能应用

    STM32驱动ADS1256串口输出-AD转换

    文章介绍了如何使用STM32通过SPI接口初始化并驱动ADS1256高精度AD转换器,包括ADS1256的芯片特点、引脚说明、模块配置、程序初始化以及实验中的接线和现象。在实验中,通过读取各个通道的AD值并转换为电压,展示了芯片功能的正确实现。
    的头像 发表于 07-01 14:59 2618次阅读
    <b class='flag-5'>STM32</b>驱动ADS1256<b class='flag-5'>串口</b>输出-AD转换

    ESP32用作经典蓝牙串口透传模块与手机进行串口通信

    本文介绍了如何把ESP32用作一个蓝牙串口透传设备使用,其功能和常用的HC-05/06串口蓝牙设备一样。并与手机蓝牙串口APP进行双向蓝牙通信
    的头像 发表于 06-20 17:45 3554次阅读
    ESP32用作经典蓝牙<b class='flag-5'>串口</b>透传模块与手机进行<b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    STM32L431偶发串口乱码的原因?怎么解决?

    项目现场发现有些设备有时下发数据没反应,该设备由STM32L431外接模块来接收网络数据。经过排查,发现乱码发生时,外接设备发出的数据无乱码STM32L431的对应该外接设备的
    发表于 06-19 06:46

    单片机实例项目:ESP8266串口WIFI

    单片机实例项目:ESP8266串口WIFI,推荐下载!
    发表于 06-03 21:01