小猫爪:这些年遇过的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. html字体颜色代码表
  2. 银行核心海量数据无损迁移:TDSQL数据库多源异构迁移方案
  3. N小时改变一次url时间戳的方法
  4. 通过OData创建C4C Lead时,遇到Account missing的错误消息
  5. python画图颜色代码_Python-使用matplotlib创建自己的颜色图并绘制颜色比例
  6. CSS设置居屏幕中间的弹出块
  7. 在ehlib的DBGridEh控件中使用过滤功能(可以不用 MemTableEh 控件 适用ehlib 5.2 ehlib 5.3)...
  8. 计算机图形学坐标系的作用,坐标系的概念和坐标系之间的变换
  9. Cartesian convention笛卡尔公约
  10. 不会真有人Macbook录屏没声音吧?别用SoundFlower了!
  11. ISO/IEC 5055:软件代码质量的标尺
  12. 网卡驱动卸载后一直安装失败的问题成功解决
  13. 关于计算ico文件hash值脚本
  14. 电脑计算机 回收站隐藏文件,电脑在回收站删除的文件能恢复吗
  15. Android中的EditText属性说明
  16. javascript_outline
  17. [Alpha阶段]第十次Scrum Meeting
  18. Ubuntu16.04编译Android 6.0系统源码过程简要记录总结
  19. Ubuntu的版本介绍
  20. Python实现拓扑排序并绘图

热门文章

  1. 用TFTP 将生成的文件传输到开发板
  2. Java#32(异常, File)
  3. 12月10日科技资讯|朱啸虎回应“美团滴滴合并”;小米成世界第四大手机制造商;Ant Design 3.26.1 发布
  4. 打印机打印,扫描小白教程(无需另装驱动)
  5. 最安全的邮箱排名是哪个?163VIP邮箱垃圾邮件怎么处理?
  6. 机器学习(十四):K均值聚类(kmeans)
  7. mysql 监控指标
  8. 软考中级软件设计师备考建议
  9. python求不同分辨率图像的峰值信噪比
  10. 小型超市管理系统毕业设计