STM32————串口发送和接收数据包

news2024/9/21 19:06:29

首先进行实验,对于代码在上一节的基础上,先定义新变量以及增加一个发送数据包函数:

本代码设置FF为包头,FE为包尾,中间为需要传输的数据,一次为4个,之后是接收数据包的函数

当标志位为1代表接收到数据,同时在H文件中申明以下变量(在main函数中调用)

之后修改中断函数,分为三种情况,当接收数据为FF时,表明接收到包头,之后需要开始传输数据。当为1时,表示开始接受数据组,本文设置为4个数据,因此当数据≥4时表明一个数据包传输完毕,之后RX状态为2发送包尾FE,表明一个数据包完整发送完毕。

本节的发送接收增加按键功能,按下一次原始数据+1并显示发送显示在OLED的TXRata上,接收时通过串口助手发送数据并显示结果在OLED上

结果如下:

1、发送数据包时的现象:

USART串口发送

2、串口发送STM32接收的情况

第二个是发送文本信息,与上边的类似,需要将包头改为@,包尾为/r/n(换行)

删除上面的两个函数,将中断函数修改为如下,只有RxFlag为0时才会执行读数据的操作,防止数据包的错乱:

主函数为:

使用strcmp将输入数据与指定的两个对比,如果一致执行指定命令,反之输出错误指令但仍然输出发送的文本。

实验结果如下:

首先在串口发送区输入灯亮指令:

之后是灯灭指令:

然后是其他输入:

理论知识如下:

首先对于HEX数据的传输主要有以下两种方式:

为防止包头包尾与传输的数据出现重复,主要有以下方法解决:

1、限制载荷的取值范围(防止传输的数据与包头包尾一致)

2、尽量选用固定包长

3、可选用多种包头包尾,如包头为FF\FD,包尾为FE\FC等方式

优点:适合发送原始数据,如陀螺仪数据、温湿度数据等

缺点:容易出现包头包尾与数据重复现象

之后是接收部分:

文本数据包就是在HEX的基础上加了一个编码实现

优点:指令比较直观,适合人机交互场景,蓝牙传输等

缺点:解析比较麻烦

文本的数据包接收状态机:

以上比较直观了解到数据包的发送与接收的理论内容。

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

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

相关文章

SpringBoot+Vue实现大文件上传(分片上传)

SpringBootVue实现大文件上传(分片上传) 1 环境 SpringBoot 3.2.1,Vue 2,ElementUI 2 问题 前几篇文章,可以用于较小文件的上传,对于较大文件来说,为了提高上传效率和可靠性,可以采…

LeetCode题练习与总结:二叉树的右视图--199

一、题目描述 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4]示例 2: 输入: [1,null,3] 输出: [1,3]示例 3: 输入: [] 输出…

判别回形针的方向(clip.hdev)

1.1应用示例思路 (1) 利用Blob分析(一般步骤:图像阈值分割、获取连通区域、计算Blob的相关几何特征),获取目标区域。 (2) 求目标区域的中心坐标和方向。 1.2应用实例代码 * clip.hdev: Orientation of clips*是否必须在活动的图形窗口中显示图标对象…

“论面向服务架构设计及其应用”写作框架,软考高级,系统架构设计师

论文真题 面向服务架构(Service-Oriented Architecture, SOA) 是一种应用框架,将日常的业务应用划分为单独的业务功能服务和流程,通过采用良好定义的接口和标准协议将这些服务关联起来。通过实施基于SOA的系统架构,用…

GPT-5 惊涛来袭:铸就智能新传奇

目录 引言: 正文: 方向一:人工智能发展现状 方向二:GPT-5技术突破预测 方向三:智能系统人类协作 方向四:迎接AI技术变革策略 结束语: 引言: 在科技浩渺浪潮澎湃翻涌的时代&…

ThinkPHP5 5.0.23 远程代码执行漏洞

目录 1、启动环境 2、漏洞利用 3、更改传参方式 4、修改参数 5、发送数据 1、启动环境 docker-compose up -d 2、访问靶机ip端口号8080 2、漏洞利用 使用burpsuite抓包软件抓包 3、更改传参方式 将 GET传参改为POST传参 4、修改参数 url参数 /index.php?scaptcha post参…

聚星文社,绘唐科技AI工具

聚星文社是一个文学创作社区,为广大创作者提供了一个交流和展示作品的平台。绘唐科技是一家AI技术公司,专注于开发人工智能工具和解决方案。绘唐科技与聚星文社合作,为聚星文社的创作者提供了一款AI工具,帮助创作者提升创作效率和…

ES+FileBeat+Kibana日志采集搭建体验

1.环境准备 需要linux操作系统,并安装了docker环境 此处使用虚拟机演示。(虚拟机和docker看参考我之前写的文章) VirtualBox安装Oracle Linux 7.9全流程-CSDN博客 VirtualBox上的Oracle Linux虚拟机安装Docker全流程-CSDN博客 简单演示搭建ES…

高可用集群keepalived 详细讲解

一:高可用集群keepalived LB:Load Balance 负载均衡 负载均衡,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器…

git详细命令

git常用命令,待 1. 前言2. Git安装3. 公钥3.1 生成公钥3.2 配置SSH 密钥 4. 配置用户名和邮箱5. git常用命令5.1 创建仓库命令5.1.1 git init命令5.1.2 git clone[url] 命令 5.2 add 增加 / 删除文件 (跟踪文件)5.3 代码提交5.4 分支5.5 标签…

性能优化理论篇 | Cache VS Buffer,傻傻分不清 ?

性能优化系列目录: 性能优化理论篇 | 彻底弄懂系统平均负载 性能优化理论篇 | swap area是个什么东西 从free命令开始 free 命令是一个在类 Unix 操作系统中用于显示内存使用情况的工具。它的输出包含了系统内存的不同方面,如总内存、已用内存、空闲内存…

不同路径 II[中等]

优质博文:IT-BLOG-CN 一、题目 一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为Start)。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为Finish)。 现在考虑网格中有…

@[TOC](letcode 分类练习 226.翻转二叉树 101. 对称二叉树 104.二叉树的最大深度 111.二叉树的最小深度)

letcode 分类练习 226.翻转二叉树 101. 对称二叉树 104.二叉树的最大深度 111.二叉树的最小深度 226.翻转二叉树101. 对称二叉树104.二叉树的最大深度111.二叉树的最小深度 226.翻转二叉树 利用自底向上的遍历交换左子树和右子树 class Solution { public:TreeNode* invertTr…

后端Web之数据库(以MySQL为例)

目录 1.概述 2.MySQL 3.DDL 4.DML 5.DQL 1.概述 对于我们自己写的一些小功能,数据一般存储在文件中,比如XML文件。而在实际项目中,数据都是存放在数据库中的。数据库(DataBase )是一个存储数据的集合&#xff0c…

双剑合璧,网络无敌!Windows Server 2012 R2双网卡绑定实战教程

文章目录 双剑合璧,网络无敌!Windows Server 2012 R2双网卡绑定实战教程1 背景信息2 配置步骤2.1 登录服务器2.2 分别清除两块网卡的配置2.3 进入“本地服务器”界面2.4 进入“NIC组合”界面2.5 创建网卡绑定组2.6 设置新建组参数2.7 查看已创建的网卡组…

【计算机硬件蓝光光驱】

蓝光光驱(Blu-ray Disc Drive)是一种光盘驱动器,用于读取和写入蓝光光盘。蓝光光盘是一种高容量、高清晰度的光存储介质,用于存储视频、音频、数据等多种媒体内容。蓝光光驱的名称“蓝光”来源于其使用的蓝色激光光束,…

Windows 安装 及解决 tvm 无法打开 源 文件 “dmlc/logging.h“

如果你在编译 TVM 时遇到 dmlc/logging.h 文件缺失的问题,很可能是因为在克隆 TVM 仓库时没有包含其子模块,而这些子模块(如 dmlc-core)是通过 Git 管理的。解决步骤 安装 Git: 如果你还没有安装 Git,需要先…

ES6学习笔记(九)——class(类)

1. 封装 传统面向对象的编程序语言都是【类】的概念,对象都是由类创建出来,然而早期 JavaScript 中是没有类的,面向对象大多都是基于构造函数和原型实现的,但是 ECMAScript 6 规范开始增加了【类】相关的语法,使得 Ja…

虚幻5|AI视力系统,听力系统,预测系统(1)视力系统

继宠物伴随系统初步篇后续 虚幻5|AI巡逻宠物伴随及定点巡逻—初步篇-CSDN博客 一,听力系统 1.打开宠物ai的角色蓝图 2.选中ai感知组件 右侧细节,找到ai感知,添加感知配置,我们需要的是ai视力配置 3.选中左侧创建的ai感知组件&…

CLRerNet推理详解及部署实现(上)

目录 前言1. 概述2. 环境配置3. Demo测试4. ONNX导出初探5. ONNX导出优化6. ONNX导出总结结语下载链接参考 前言 继续我们的车道线检测任务,之前我们分享了基于 anchor 的 LaneATT 模型以及 CVPR2022 的 SOTA 方案 CLRNet,这里我们分享 WACV2024 中的一个…