串口接收,不定长数据接收

###1.CUBE-MX配置串口
在这里插入图片描述
2.我采用串口中断接收,打开中断接口
在这里插入图片描述
3.时钟同样8倍频,1分频,使用内部时钟
在这里插入图片描述

打开串口中断
main()
{
__HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE); // 启用空闲中断__HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE); // 启用接收数据就绪中断HAL_UART_Receive_IT(&huart1,RxData,1); // 启动接收while(1){HAL_UART_Transmit(&huart1,(uint8_t *)&crc,2,HAL_MAX_DELAY);//发送函数,第一个参数串口的句柄huart1,第二个参数发送的内容crc,这个地方自己修改:HAL_MAX_DELAY这个参数表示无限等待下去,直到发送成功为止}}

主函数写完了,现在进行对中断函数处理,这里进行一个字符一个字符的接收

void USART1_IRQHandler(void)
{/* USER CODE BEGIN USART1_IRQn 0 *//* USER CODE END USART1_IRQn 0 */HAL_UART_IRQHandler(&huart1);/* USER CODE BEGIN USART1_IRQn 1 */// 检查接收数据就绪标志if (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE) != RESET) {//从USART接收一个字节,并存储到RxData数组RxData[temp++] = USART1->DR;}else if (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_IDLE) != RESET){// 检查空闲标志uint32_t temp1;temp1 = huart1.Instance->SR; // 读取 SR 寄存器temp1 = huart1.Instance->DR; // 读取 DR 寄存器Counter_RSUSART =temp;// 重置计数器,准备接收下一帧数据temp = 0;}HAL_UART_IRQHandler(&huart1);//重新打开中断/* USER CODE END USART1_IRQn 1 */
}

参考这个博主

https://blog.csdn.net/qq_25814297/article/details/123082048
https://www.eeworld.com.cn/mcu/eic669733.html

上述说的是收到一个字节的数据时RXNE变为1,一直到IDLE变为1的时候证明这一包数据接收完毕了,要读掉这两个变量,下次才能继续。

原理就是一个字节一个自己的接收,直到IDLE变为1,我进行清除。再进行接收

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

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

相关文章

海滨学院班级记忆宝盒:设计与实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

分布式集群本地缓存

在 Java 分布式集群微服务项目中,虽然 Redis 等分布式缓存更常用,但在某些特定场景下,本地缓存依然有较好的应用价值。常用的本地缓存工具主要有以下几种: 1. Caffeine 简介:Caffeine 是一个现代化的高性能 Java 本地…

如何在Linux系统中使用SSH进行安全连接

如何在Linux系统中使用SSH进行安全连接 SSH简介 安装SSH 在Debian/Ubuntu系统中安装 在CentOS/RHEL系统中安装 启动SSH服务 验证SSH是否安装成功 SSH配置 配置监听端口 配置登录方式 SSH客户端 安装SSH客户端 使用SSH客户端 SSH密钥认证 生成SSH密钥对 复制公钥到远程服务器…

Maven(26)如何使用Maven进行持续集成?

使用Maven进行持续集成(Continuous Integration, CI)通常涉及设置一个CI服务器,如Jenkins,并配置Maven项目以自动构建和测试。以下是一个详细的步骤指南,包括如何在Jenkins中设置Maven项目: 步骤 1: 安装和…

使用 Elasticsearch 进行语义搜索

Elasticsearch 是一款功能强大的开源搜索引擎,可用于全文搜索、分析和数据可视化。传统上,Elasticsearch 以其执行基于关键字/词汇的搜索的能力而闻名,其中文档基于精确或部分关键字匹配进行匹配。然而,Elasticsearch 已经发展到支…

ElasticNet Regressor(弹性网络回归) --- 论文实战

一、前言 在《机器学习论文复现实战---linear regression》中通过Pearson 相关性分析,去除了2个高相关性特征 "PN" 和 "AN" ,数据维度变为890*25。(数据集地址) 这里我们不做如何前期处理,直接就将数据放入 ElasticNet 模型中进行训练了。 二、模型训…

OJ-5G网络建设

示例1 输入: 3 3 1 2 3 0 1 3 1 0 2 3 5 0 输出: 4示例2 输入: 3 1 1 2 5 0 输出: -1 示例3 输入: 3 3 1 2 3 0 1 3 1 0 2 3 5 1 输出: 1 分析:压缩路径 顺序:1 2;…

Kubeadm搭建k8s

一、架构 节点名称规格IP地址安装组件master012C/4G,cpu核心数要求大于2192.168.88.76docker、kubeadm、kubelet、kubectl、flannelnode012C/2G192.168.88.20docker、kubeadm、kubelet、kubectl、flannelnode022C/2G192.168.88.21docker、kubeadm、kubelet、kubect…

Ubuntu 安装 redis

一、使⽤apt安装 apt install redis -y 二、⽀持远程连接 修改 /etc/redis/redis.conf 修改 bind 127.0.0.1 为 bind 0.0.0.0修改 protected-mode yes 为 protected-mode no # By default, if no "bind" configuration directive is specified, Redis listens# fo…

Vue常用的修饰符有哪些?

修饰符(Modifiers)是用于指定以特殊方式绑定或处理Vue事件或指令的特殊符号。 事件修饰符 .stop: 阻止时间继续传播,相当于调用event.stopPropagation() .prevent: 阻止默认事件,相当于调用event.preventDefault() .capture: 使…

WordPress伪静态设置

为什么要设置WordPress伪静态,搜索引擎优化(SEO)中,静态URL通常被认为更易于搜索引擎爬虫抓取和索引,有助于提高网站的搜索引擎排名。 WordPress伪静态设置方法主要依赖于服务器环境,以下是针对不同服务器…

【简道云 -注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

【系统架构设计师】2023年真题论文: 论面向对象分析的应用与实现(包括解题思路和素材)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2023年 试题1)解题思路面向对象分析的概念与核心技术面向对象分析的流程面向对象分析的应用案例论文素材参考真题题目(2023年 试题1) 面向对象设计是一种软件设计方法,它将系统看作一组相互作用的对…

太速科技-712-6U VPX飞腾处理器刀片计算机

6U VPX飞腾处理器刀片计算机 一、产品概述 该产品是一款基于国产飞腾FT-2000四核处理器或D2000八核处理器的高性能6U VPX刀片式计算机。产品提供了可支持全网状交换的高速数据通道,其中P1、P2均支持1个PCIe x16 Gen3或2个PCIe x8 Gen3或4个PCIe x4 Gen3总…

安卓设备adb执行AT指令控制电话卡

文章目录 AT指令起源与发展:基本格式:常见应用领域及功能:不同设备中的应用: 安卓获取modem设备输入符入口安卓设备输入AT指令 AT指令 AT 指令是 Attention 的缩写,是一种用于控制调制解调器等通信设备的指令集。 起…

uniapp项目 存储数据到手机本地

打开manifest.json&#xff0c;在App权限配置中&#xff0c;添加读取和写入的权限 <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE"/&g…

在 VS Code 中规范化 Git 提交消息并自动生成 CHANGELOG.md

1. 使用 Commitizen 规范化 Git 提交消息 首先&#xff0c;安装 Commitizen 和适用于 Angular 提交规范的适配器&#xff1a; npm install -g commitizen commitizen init cz-conventional-changelog --save-dev --save-exact这样&#xff0c;提交信息将遵循 Angular 规范&am…

c++模板入门

c系列模板入门 文章目录 c系列模板入门一、模板概念引入二、函数模板2.1、函数模板的概念2.2、函数模板的定义格式2.3、函数模板的使用 三、类模板1.1、什么是类模板1.2、类模板的定义格式1.3、类模板于函数模板的区别 一、模板概念引入 在程序设计中我们经常需要对两个数据进…

MyBatis-Plus中AbstractJsonTypeHandler使用小结

在 MyBatis-Plus 中&#xff0c; AbstractJsonTypeHandler 是一个用于处理 JSON 数据类型的抽象类。 一、作用 1. 数据库与 Java 对象之间的 JSON 数据转换 当数据库中的字段类型为可以存储 JSON 格式数据的类型&#xff08;如 MySQL 的 JSON 类型、Oracle 的 CLOB 等可存储…

谷粒商城のsentinelzipkin

文章目录 前言一、Sentinel1、什么是Sentinel2、项目配置3、使用案例3.1、流控3.2、降级3.3、黑白名单设置 二、Zipkin1、什么是Zipkin2、项目配置3、整合案例 前言 本篇介绍Spring Cloud Ali的sentinel组件&#xff0c;用于对微服务的熔断降级&#xff0c;以及链路追踪zipkin的…