小猫爪:这些年遇过的Bug2-STM32 UART输出乱码

  • 1 背景
  • 2 场景描述
  • 3 分析原因
  • 4 解决方案

1 背景

芯片型号:STM32F103C8T6
应用类型:普通UART应用
错误现象:配置9600波特率正常,当配置115200时出现第一个字符乱码

2 场景描述

使用STM32的USART1做一个简单的RS485应用时,使用了内部8M时钟,经过PLL倍频到48M(倍频到64M后,芯片会出现死机现象,无解),然后经过1分频后给AHB2提供时钟,因为USART1是属于AHB2的外设。后使用USART1,先是配置USART1的波特率为9600,收发正常,后又将比特率设置为115200,这时候在串口助手上接收的第一个字节出现乱码现象,且出现跳动,这时就非常无解。

3 分析原因

UART波特率出现乱码的原因其实很简单就能推算出来:
①时钟配置错误
②波特率寄存器配置错误
③一些硬件问题

根据上面的三个方向,我就开始了漫长的推断,一开始我以为是因为使用了内部时钟的问题或者波特率设置的问题,导致了不稳定,但是又很快被我pass了,如果是时钟或者配置的问题,那为什么只有第一个字节出现了问题,其他字节却非常稳定呢,这就非常诡异,后来我又把问题锁定在了第三个问题,于是我抓了一下波形,结果波形稳如狗,雷打不动的那种稳,what fuck!!!

4 解决方案

研究了一下午,我快对自己的代码还有芯片产生怀疑了,就在这时,有人注意到了我的USB转485模块是那种有隔离的功能,所以就怀疑是不是这个玩意的隔离响应不行,后来就将这个USB转485换成普通的,结果完美。。。What Fuck!!!这个USB转485模块我以前用了很久,没有问题啊,怎么突然就出问题了,这是怎么回事呢。。。后来。。。我们又注意到了我们的应用上也使用了485隔离芯片,真相若隐若现。。。

盲猜:两个隔离模块加在一起出现了不可估计的影响,具体是怎么影响的,就没有过多去追究了。

教训:作为一个合格的程序员请相信自己的代码!!!

END

小猫爪:这些年遇过的Bug2-STM32 UART输出乱码相关推荐

  1. 小猫爪:这些年遇过的Bug1-KW36 FLASH模拟EEPROM读写错误

    小猫爪:这些年遇过的Bug1-KW36 FLASH模拟EEPROM读写错误 1 背景 2 场景描述 3 分析原因 4 解决方案 1 背景 芯片型号:MKW36A512VFT4(NXP) 操作系统:Fr ...

  2. 小猫爪:嵌入式小知识01-存储器

    小猫爪:嵌入式小知识01-存储器 1 前言 2 存储器的种类 2.1 易失性存储器 2.1.1 SRAM 2.1.2 DRAM 2.1.3 SRAM和DRAM的对比 2.2 非易失性存储器 2.2.1 ...

  3. 小猫爪:i.MX RT1050学习笔记3-CCM

    小猫爪:i.MX RT1050学习笔记3-CCM 1 前言 2 RT时钟的管理 3 CCM的结构 4 CCM的时钟树 5 时钟模块的具体功能 5.1 生成时钟 5.1.1 时钟源 5.1.2 7个PL ...

  4. 小猫爪:PMSM之FOC控制07-有传感器的速度环

    小猫爪:PMSM之FOC控制07-有传感器的速度环 1 前言 2 加入速度环 3 传感器获取转子位置的思路 3.1 编码器 3.2 霍尔位置传感器 4 移植 END 1 前言   前面已经实现了电流闭 ...

  5. 小猫爪:嵌入式小知识10-I2S,TDM,PCM等音频格式详解

    小猫爪:嵌入式小知识10-I2S,TDM,PCM等音频格式详解 1 前言 2 I2S 3 Codec模式(左/右对齐) 3.1 左对齐(MSB对齐) 3.2 右对齐(LSB对齐) 4 DSP模式 5 ...

  6. 小猫爪:汽车电子小知识02- ISO14229-1(UDS)简介

    小猫爪:汽车电子小知识02- ISO14229-1(UDS服务)简介 1 前言 2 服务数据格式 2.1 无子功能的格式 2.2 有子功能的格式 3 物理寻址和功能寻址 4 服务简介 4.1 诊断会话 ...

  7. 小猫爪:汽车电子小知识01- ISO15765(UDS on CAN)详解

    小猫爪:汽车电子小知识01- ISO15765(UDS on CAN)简介 1 前言 2 ISO15765和OSI的联系 3 ISO15765-2 网络层定义 3.1 拆包和组包(SDU和PDU) 3 ...

  8. 小猫爪:S32K3学习笔记09-S32K3之Safety简介

    小猫爪:S32K3学习笔记09-S32K3之Safety简介 1 前言 2 Safety相关硬件介绍 3 Safety相关软件介绍 4 Safety文章目录 END 1 前言   接下来,就要开始进学 ...

  9. 小猫爪:S32K3学习笔记05-S32K3之ADC

    小猫爪:S32K3学习笔记05-S32K3之ADC 1 前言 2 资源简介 3 ADC功能详解 3.1 ADC mux-mode channels 3.2 ADC内部框架 3.3 时钟源 3.4 通道 ...

最新文章

  1. LeetCode刷题记录4——67. Add Binary(easy)
  2. 剑指Offer #02 替换空格(字符串处理)
  3. AngularJS之ng-class(十一)
  4. leetcode 907. Sum of Subarray Minimums | 907. 子数组的最小值之和(单调栈)
  5. Linux安装SNMP
  6. redis缓存数据表
  7. 数据科学还是计算机科学_数据科学101
  8. 插入排序(java版)
  9. Android源码下 进行cts测试 和 cts的注意事项。
  10. 手把手教你免费申请支持通配符的 SSL 证书
  11. list scala 当前位置 遍历_Scala学习七之集合了解
  12. python现在用哪个版本好_python哪个版本好用
  13. python中snip_Snip滚动截屏_腾讯Snip For Mac官方下载-华军软件园
  14. 白帽杯2022-Misc 游戏秘籍 write-up
  15. 深度解密Go语言之map
  16. GIF是什么格式的文件
  17. SAP UI5 应用开发教程之七十九 - 采用测试驱动开发理念(Test Driven Development)进行 SAP UI5 应用的功能开发(一)的试读版
  18. 持续爆点:一对一直播和短视频
  19. 智能门锁暗藏的物联网安全危机
  20. 举个栗子!Tableau 技巧(202):用参数为图表设置开关按钮

热门文章

  1. 机器学习实例matlab,【学习】Matlab14个机器学习实例
  2. Linux ubuntu MySQL 定时备份/手动备份/还原 测试教程
  3. VC++如何将rc资源中的图片加载到MFC的CImage对象中(附源码)
  4. 控制面与数据面分离的思想及其应用
  5. 从网络启动linux调试方法
  6. 【学术】基金申请体会:写好本子是年轻人的最佳出路(转贴)
  7. 淘券通---推荐一款淘宝派券软件
  8. 如何在子类中调用父类的函数
  9. fpga vivado 错误总结(本人遇到以及改正)
  10. matlab function_Matlab绘制地图