【 STM32Fxx串口问题-发送时间-发送字节拉长-每一位与下一位也拉长->>记录问题以及解决方式-复盘】

news2025/7/18 5:48:02

【 STM32Fxx串口问题-发送时间-发送字节拉长-每一位与下一位也拉长->>记录问题以及解决方式】

  • 前言
  • 环境
  • 问题描述
        • (1)测试uart5时:
        • (2)测试uart1时:
  • 原因点
  • 解决方式
  • 细节点
  • 总结

前言

在做项目的时候,整个系统比较复杂,发现整个系统开机比较慢,整个系统,下层比较简单的,只要判断电池相关数据,就可以开机,但是为什么会慢,两三天,都没找到原因,一直以为其它地方影响。大概经历了一周,做了多次交叉实验和测试,后来发现,还是底层干扰,这个前没注意到,只是硬件稍微的不同,软件本身有bug,放大了这个现象,导致本次事故,另外当时出现问题时,查找网上,还没有类似问题,我这个可能算是第一例,第一个写这个问题的,吃一堑长一智吧。

环境

本次因为是项目中的系统环境,只能大致描述下环境。
软件环境:运行在STM32F4xx芯片下,但是在整个系统中,系统还有其它设备。

问题描述

表现现象是,在系统开机时,开机时间比以往要慢,这个用了很长一段时间,都没有出现问题,并且交叉实验,有的设备上行,有的设备不行。

(1)测试uart5时:

后来使用逻辑分析仪抓几个串口波形,发现uart5,数据被拉长了,uart5是堵塞发送,或者说轮询发,波形如下。
在这里插入图片描述
这点其实很奇怪,我当时也是第一次看到这样的数据,后来屏蔽所有外围设备,单独使用uart5轮询发送,波形如下,这样数据才是我们认为正常数据。
在这里插入图片描述

(2)测试uart1时:

后来又使用逻辑分析仪抓取uart1波形,uart1使用的是DMA发送,发现数据为也被拉长了,波形如下。
在这里插入图片描述
这其实很奇特,串口之间好像有了某种默契已于,都拉长了字节,这肯定是不对的,交叉实验,发现另一台uart1没有这样的问题。
在这里插入图片描述

原因点

因为使用嵌入式操作系统RTOS,以为是这部分影响,后来交叉实验,去掉外围设备,发现拿掉跟uart4通信的设备,问题没有了,当时以为是跟那个设备有关系,如下图,是抓取得逻辑分析仪波形。
以下为整个波形:
在这里插入图片描述
以下为其中细节
在这里插入图片描述
然后更换硬件,对比测试。
在这里插入图片描述
其中Rx应该是干净的。当时并没有用到Rx,只用Tx做DMA数据推送,不用有这样奇怪的波形。

后来查代码,发现在回调函数里虽然没用的Rx接收,但是初始化,并且没有删除阻塞发送,到这本次事故。
这里我拿之前文章里的代码举个例子:

软件STM32cubeIDE下使用STM32F4xx配置uart1和uart5数据互相透传-基础样例
就是透传实验的例子,如下,当时因为测试,想在主函数里发送,但是没成功,并且本身也是基础样例,就没深入调试。
在这里插入图片描述
并且在细节里也特意说明了。
在这里插入图片描述

解决方式

在回调函数里,尽量不要做过多的操作,不然会造成意想不到错误。
这次就看出可以遭成所有线程变慢的现象。

细节点

(1)硬件不一致,导致软件放大现象。
代码其实运行了一段是时间了,在多个设备运行了,之前没有问题,本次正好硬件稍微不稳定一段时间,就导致如此现象,这很难查到,如下图,测试了其它设备波形,和本次,上电时对比图。
在这里插入图片描述

(2)硬件上电前,为不确定态。
根据硬件大佬描述,硬件起电时,就是不确定状态,除非加入一些特定三态门什么的。

总结

吃一堑,长一智。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/17486.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1388. 3n 块披萨

文章目录1. 背2. 题目3. 答案1. 背 首先,考虑没有环的情况。如果没有环这道题可以转变为和打家劫舍II一毛一样。但是明明这道题是三块披萨一拿啊,打家劫舍是相邻不能拿,还是不一样啊。 这块证明挺难的,但是我可以用个简单的例子…

MicroPython-On-ESP8266——8x8LED点阵模块(1)驱动原理

MicroPython-On-ESP8266——8x8LED点阵模块(1)驱动原理 1. 8x8LED点阵模块介绍 1.1. 显示模块的升级 之前已经试过点亮8段数码管,并能够使用两片HC595芯片来驱动数码管。今天我又找来了一个8x8点阵LED屏,下面分析一下这个屏幕并…

【用户画像】Redis的简介和安装

文章目录一 Redis简介1 应用场景(1)业务系统:配合关系型数据库做高速缓存(2)大数据场景:缓存数据(3)大数据场景:临时数据(4)大数据场景&#xff1…

【计算机毕业设计】医院管理系统源码

一、系统截图(需要演示视频可以私聊) 一.摘要 目前各医疗机构中,绝大部分中小型医疗机构内部没有实现任何信息化管理,医院临床信息,业务流程的数据依然采取纸质记录,造成数据容易丢失&#xff…

CCSP通过经验 | 讲义覆盖的知识点更全面(含题型分析)

我一直就职于国内网络安全乙方,自2014年接触云安全后,一直希望能获取一个比较官方的云安全从业水平的资格证书。 在横向比较了如腾讯云、华为云、阿里云以及国外如亚马逊云认证后,在没有明确就职意向的情况下,选择了ISC2的认证资…

如何用等价类划分法设计测试用例, 来测试程序的日期检查功能?

某学籍排查系统要求学生输入入学日期,日期限制在2008年9月至2012年7月,即系统只能对该段期间内的学籍进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的6位数字 字符组成,前四位代表年&#xf…

多环境 运维

启动dev 同时包含 下面的 MVC DB 做配置时 如果 遇到相同参数 后加载的 覆盖前加载的 先加载 include 的 active 的是最后加载的 如果需要该 dev 需要该很多 include 换成 group 如果 active 是 dev 则加载dev组 如果 active 是pro 则加载pro组 在pom文件中 设置多环境 &l…

[UE][UE5]像素流送,像素流去掉黑边和按钮

[UE]这里写目录标题1.写在前面01.作者碎碎念02.结果演示截图视频教程2.需要准备的软件3.步骤01.准备一个打包好的项目02.启动服务器03.连接!去掉黑边和按钮结尾1.写在前面 01.作者碎碎念 2022.11.19初次更新 俺是不是很粗长!老仔细了,全是截图&#xf…

目标检测算法——YOLOv5/YOLOv7改进|结合涨点Trick之ASFF_Detect(自适应空间特征融合)

>>>深度学习Tricks,第一时间送达<<< 🚀🚀🚀NEW!!!魔改YOLOv5/YOLOv7目标检测算法来啦 ~ 💡💡魔法搭配计算机视觉领域各类创新新颖且行之有效的网络结构,平均精度均值mAP涨点明显,实验效果也俱佳。有需要的小伙伴可以在CSDN后台留言+点赞收藏…

Linux环境搭配

Linux环境搭配 文章目录Linux环境搭配1.Linux背景介绍1.1 系统发展史1.2 开源与官方网址1.3 企业Linux应用现状1.4 Linux发行版本2.Linux环境搭配2.1 Linux环境搭配方式2.2 服务器购买2.3 云服务器配置3.Linux远程登陆3.1 Linux桌面3.2 远程登陆工具3.3 Xshell登陆服务器(单用户…

开放式无线运动耳机怎么挑选,适合在运动佩戴的几款耳机推荐

作为一个运动爱好者而言&#xff0c;耳机是可以堪称灵魂伴侣&#xff0c;好比如在健身房运动的时候可以一边戴着耳机&#xff0c;一边在跑步机上刷着剧&#xff0c;不仅能将两小时的需求量直接浓缩为一小时的使用量&#xff0c;想想都觉得自己赚到了&#xff0c;但是在耳机选购…

Windows11 Android开发相关记录(持续更新...)

Windows11 Android开发相关记录&#xff08;持续更新…&#xff09; 本章节主要记录安装好Windos系统后开发环境搭建及其心得。 以及开发常用软件和相关配置。 以下属于个人做法&#xff0c;仅供参考&#xff1a; 文章目录Windows11 Android开发相关记录&#xff08;持续更新…

【计算机网络】Tomcat和Servlet基础知识汇总

目录 1.Tomcat&#xff1a; 2.Servlet&#xff1a; 1.Tomcat&#xff1a; Tomcat是一个HTTP的服务器&#xff0c;本质上就是一个TCP服务器&#xff0c;只不过加上了一些按照HTTP协议格式进行解析/构造这样的代码。学习Tomcat的目的就是能够熟练掌握Tomcat api&#xff0c;基…

公司的这种打包启动方式,我简直惊呆了

前言 大家都知道&#xff0c;SpringBoot应用最终会打出一个Fat Jar, 里面包含了用到的全部依赖&#xff0c;启动也非常简单&#xff0c;java -jar xxx.jar即可。 但是我们公司打出的最终包&#xff0c;将依赖包挪到了外部&#xff0c;然后启动的时候通过loader.path指定依赖包…

第1章 数据库及其表的自动生成与前言

001 RootEntityTkey<Tkey>、BlogArticle RootEntityTkey<Tkey>&#xff1a;该实体类以泛型形式&#xff0c;定义了当前程序中所有实体的自增型主键。 BlogArticle&#xff1a;继承了RootEntityTkey<Tkey>&#xff0c;通过该实体类及其属性成员&#xff0c;用…

基于sklearn的机器学习实战

本文目录如下&#xff1a;LinearRegression线性回归入门数据生成定义模型模型测试与比较多项式回归具体实现LogisticRegression算法思想简述算法实现Decision TreeMLPSVM线性SVM多项式核高斯核对比不同核在Mnist上的效果读取数据高斯核多项式核线性核NBayesbagging与随机森林Ad…

适用于Linux的6个最佳Python IDE

早在 1991 年&#xff0c;当Guido van Rossum第一次引入 Python 时&#xff0c;他不会想到 Python 的未来发展这么好。现在我们在这里规模地使用Python构建项目。根据 2022 年的一份报告&#xff0c;Python 在全球拥有 29.53% 的份额&#xff0c;位居榜首。 Python 的设计牢记…

④开启shift后门实验报告

班级 计科1班 姓名 彭彭头 学号 时间 2022.05.13 成绩 实验项目名称 开启shift后门 实验目的 1、了解常用入侵主机的方法 2、掌握操作系统常见漏洞&#xff0c;并学会防范 实验内容 利用Windows7系统的shift漏洞&#xff0c;开启后门。 实验环境 操作系统&a…

分布式前修课:Zookeeper锁实现方式

前言 聊完MySQL和Redis&#xff0c;我们接下来在聊一聊Zookeeper。相信大家都已经发现了&#xff0c;这些都是我们在开发过程非常常用的技术。搞定他们&#xff0c;一切难题都不在话下。 Zookeeper&#xff0c;盘它 官网是我们学习某一种技术框架的第一手资料&#xff0c;通…

JAVA泛型

泛型的由来 因为JAVA中假如构建了一个object集合&#xff0c;在集合里存储任何的数据类型对象&#xff0c;定义了一个字符串&#xff0c;又定义一个常数。呢么在遍历数组Arraylist的时候&#xff0c;在代码行里并不会报错&#xff0c;但是运行之后会出现ClassCastException异常…