小猫爪:这些年遇过的Bug2-STM32 UART输出乱码
小猫爪:这些年遇过的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输出乱码相关推荐
- 小猫爪:这些年遇过的Bug1-KW36 FLASH模拟EEPROM读写错误
小猫爪:这些年遇过的Bug1-KW36 FLASH模拟EEPROM读写错误 1 背景 2 场景描述 3 分析原因 4 解决方案 1 背景 芯片型号:MKW36A512VFT4(NXP) 操作系统:Fr ...
- 小猫爪:嵌入式小知识01-存储器
小猫爪:嵌入式小知识01-存储器 1 前言 2 存储器的种类 2.1 易失性存储器 2.1.1 SRAM 2.1.2 DRAM 2.1.3 SRAM和DRAM的对比 2.2 非易失性存储器 2.2.1 ...
- 小猫爪: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 ...
- 小猫爪:PMSM之FOC控制07-有传感器的速度环
小猫爪:PMSM之FOC控制07-有传感器的速度环 1 前言 2 加入速度环 3 传感器获取转子位置的思路 3.1 编码器 3.2 霍尔位置传感器 4 移植 END 1 前言 前面已经实现了电流闭 ...
- 小猫爪:嵌入式小知识10-I2S,TDM,PCM等音频格式详解
小猫爪:嵌入式小知识10-I2S,TDM,PCM等音频格式详解 1 前言 2 I2S 3 Codec模式(左/右对齐) 3.1 左对齐(MSB对齐) 3.2 右对齐(LSB对齐) 4 DSP模式 5 ...
- 小猫爪:汽车电子小知识02- ISO14229-1(UDS)简介
小猫爪:汽车电子小知识02- ISO14229-1(UDS服务)简介 1 前言 2 服务数据格式 2.1 无子功能的格式 2.2 有子功能的格式 3 物理寻址和功能寻址 4 服务简介 4.1 诊断会话 ...
- 小猫爪:汽车电子小知识01- ISO15765(UDS on CAN)详解
小猫爪:汽车电子小知识01- ISO15765(UDS on CAN)简介 1 前言 2 ISO15765和OSI的联系 3 ISO15765-2 网络层定义 3.1 拆包和组包(SDU和PDU) 3 ...
- 小猫爪:S32K3学习笔记09-S32K3之Safety简介
小猫爪:S32K3学习笔记09-S32K3之Safety简介 1 前言 2 Safety相关硬件介绍 3 Safety相关软件介绍 4 Safety文章目录 END 1 前言 接下来,就要开始进学 ...
- 小猫爪: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 通道 ...
最新文章
- html字体颜色代码表
- 银行核心海量数据无损迁移:TDSQL数据库多源异构迁移方案
- N小时改变一次url时间戳的方法
- 通过OData创建C4C Lead时,遇到Account missing的错误消息
- python画图颜色代码_Python-使用matplotlib创建自己的颜色图并绘制颜色比例
- CSS设置居屏幕中间的弹出块
- 在ehlib的DBGridEh控件中使用过滤功能(可以不用 MemTableEh 控件 适用ehlib 5.2 ehlib 5.3)...
- 计算机图形学坐标系的作用,坐标系的概念和坐标系之间的变换
- Cartesian convention笛卡尔公约
- 不会真有人Macbook录屏没声音吧?别用SoundFlower了!
- ISO/IEC 5055:软件代码质量的标尺
- 网卡驱动卸载后一直安装失败的问题成功解决
- 关于计算ico文件hash值脚本
- 电脑计算机 回收站隐藏文件,电脑在回收站删除的文件能恢复吗
- Android中的EditText属性说明
- javascript_outline
- [Alpha阶段]第十次Scrum Meeting
- Ubuntu16.04编译Android 6.0系统源码过程简要记录总结
- Ubuntu的版本介绍
- Python实现拓扑排序并绘图