串口通信函数汇总-ing

 谢谢各位佬的阅读,本文是我自己的理解,如果您发现错误,麻烦请您指出,谢谢

首先谈谈我自己对于串口的理解,随便拿一个嵌入式的板子,它上面有两个引脚,一个是rx,一个是tx,rx用于接收来自上位机,也就是电脑的数据,就是我们在串口调试助手的对话框输入的东西,我们需要串口接收函数来接收读取的数据,并将这个数据存放到一个数组中供我们的后续使用

这个函数就是串口回调函数void HAL_UART_RxCpltCallBack(UART_HandleTypeDef *huart)

void HAL_UART_RxCpltCallBack(UART_HandleTypeDef *huart)
{
    if(huart->Instance==USART1)
    {
        rxdata[rx_pointer++]=rxdat;//先用后加
        //每次只能接收一位,每进一次中断就会把上一次的存进中断里,然后1位1位拼起来就是完整的字符串了。
        HAL_UART_Receive_IT(&huart1,&rxdat,1);
    }
}

在串口回调函数中,每用一次HAL_UART_Receive_IT(&huart1,&rxdat,1);这个串口接收中断使能函数,我们从对话框输入的一大串字符的一个字符就会赋值给rxdat,例如CNBR:A392:200202120000这一大串字符,就会按顺序将C,N,B,R,:,A,3,9,2,:.........0将字符依次赋值给rxdat,而rxdata这是一个数组,它会按顺序的将rxdat的值存入数组,实现这个功能主要归功于rx_pointer这个变量在程序每进一次串口回调函数就会加1,使rxdat的值依次存入rxdata数组,并且最终在数组里的顺序与我们在对话框中输入的数据完全一致。

也就是rxdata[22]={CNBR:A392:200202120000};

如果我们想要分析这个数组里的数据,这时候就要用到sscanf函数

sscanf(rxdata,"%4s:%4s:%12s",car_type,car_data,car_time);

你能看的懂这个函数的用法吗?是不是很简单,我们先看%4s:%4s:%12s

发现4,4,12分别对应的是CNBR, A392, 200202120000,也就是说我们不需要':',所以将CNBR赋值给car_type,        A392赋值给car_data,   200202120000赋值给car_time

这时候分析起来数据就简单了

我们再来谈谈串口的发送,这个相较于串口的接收简单很多,

        sprintf(text,"please input key:\r\n");
        HAL_UART_Transmit(&huart1,(uint8_t *)text,sizeof(text),50);
        HAL_Delay(1000);

串口调试助手上面显示的数据只能是嵌入式板子发送给它的数据,你自己在对话框中发送的数据是直接传送给板子,不会在显示界面显示

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

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

相关文章

如何用HTML5 Canvas实现电子签名功能✍️

🤖 作者简介:水煮白菜王,一位前端劝退师 👻 👀 文章专栏: 前端专栏 ,记录一下平时在博客写作中,总结出的一些开发技巧和知识归纳总结✍。 感谢支持💕💕&#…

大模型开源的工具包有哪些特殊符号可以使用;SEP 是什么

大模型开源的工具包有哪些特殊符号可以使用 目录 大模型开源的工具包有哪些特殊符号可以使用自定义特殊token:special_tokens=True一、**对话轮次分隔符(必选)**二、**系统提示标记(提升指令理解)**三、**中文特色分隔符(贴合书写习惯)**四、**开源模型专属符号(按文档…

控制系统分类

文章目录 定义与特点1. 自治系统(Autonomous System)与非自治系统(Non-Autonomous System)自治系统非自治系统 2. 线性系统(Linear System)与非线性系统(Nonlinear System)线性系统非…

通过 ElasticSearch的Python API和`curl` 命令获取Elasticsearch 所有索引名称

导言 在大数据管理和实时搜索场景中,Elasticsearch 是一款不可或缺的工具。无论是开发调试、数据维护,还是系统监控,快速列出所有索引名称都是一个高频需求。本文将手把手教你如何通过 Python 客户端连接 Elasticsearch,并用两种方…

2024年广州市智能网联汽车创新实践年度报告

政策法规方面,积极推进《广州市智能网联汽车创新发展条例》的制定和发布,不断完善法规标准体系,为产业创新发展营造良好政策环境;技术创新方面,企业加大研发投入,在自动驾驶算法、车联网安全等关键领域取得…

计算机操作系统(一) 什么是操作系统

计算机操作系统(一) 什么是操作系统 前言一、什么是操作系统二、操作系统的作用三、推动操作系统发展的主要动力总结(核心概念速记): 前言 当你打开电脑、点击应用、播放音乐时,是谁在背后默默协调这一切&…

韦伯望远镜的拉格朗日点计算推导过程,包含MATLAB和python运动轨迹仿真代码

研究过程 起源与提出:1687 年牛顿提出 “三体问题”,旨在研究三个可视为质点的天体在相互之间万有引力作用下的运动规律,但因运动方程过于复杂,难以得到完全解。欧拉的贡献1:1767 年,瑞士数学家莱昂哈德・…

Gateway:网关路由与登录鉴权

在微服务架构中,用户登录和身份校验的处理方式确实与单体应用有所不同。在单体架构中,一旦用户通过身份验证,其会话信息可以在整个应用范围内共享,所有模块都能访问到用户信息。然而,在微服务架构下,每个服…

【结构光相机的精度极限】

1. 光源波长((\lambda)) 光源波长是决定结构光相机精度极限的核心因素之一。根据光学衍射极限理论,光的波长越短,能够分辨的细节越小,精度越高。 理论依据: 根据瑞利判据(Rayleigh Criterion&…

Vision Transformer (ViT):将Transformer带入计算机视觉的革命性尝试(代码实现)

Vision Transformer (ViT):将Transformer带入计算机视觉的革命性尝试 作为一名深度学习研究者,如果你对自然语言处理(NLP)领域的Transformer架构了如指掌,那么你一定不会对它在序列建模中的强大能力感到陌生。然而&am…

【实战ES】实战 Elasticsearch:快速上手与深度实践-8.1.1基于ES的语义搜索(BERT嵌入向量)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 基于Elasticsearch与BERT的语义搜索架构设计与实战1. 传统搜索的局限性与语义搜索的崛起1.1 关键词搜索 vs 语义搜索1.2 Elasticsearch向量检索演进历程关键版本特性对比 2.…

linux 学习笔记

# Linux学习笔记 ## 1 Linux入门 ### 1.1 概述 Linux内核最初只是芬兰人在赫尔辛基大学上学时处于个人爱好而编写的。 Linux是一套免费使用和自 由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能运行主要的U…

Python个人学习笔记(14):函数(匿名函数、内置函数(下)、三元表达式)

九、匿名函数 lambda表达式 语法规则&#xff1a; 变量 lambda 参数1,参数2,…:返回值 例&#xff1a;用lambda简化下述操作 def func(a,b):return ab ret func(1, 2) print(ret)代码&#xff1a; fn lambda a,b:ab print(fn) print(fn(12,13))结果&#xff1a; <fun…

dns劫持是什么?常见的劫持类型有哪些?如何预防?

DNS劫持的定义 DNS劫持&#xff08;Domain Name System Hijacking&#xff09;是一种网络攻击手段&#xff0c;攻击者通过篡改域名解析的过程&#xff0c;将用户对某个域名的访问请求重定向到错误或恶意的IP地址。这种攻击可能导致用户访问到钓鱼网站、恶意广告页面&#xff0…

prompt大师高效提示词解析

Prompt大师李继刚高效提示词示例解析 一、「汉语新解」提示词 核心结构 采用Lisp语言框架嵌套中文语义&#xff0c;通过(defun 新汉语老师 ()...)定义角色风格&#xff08;融合奥斯卡王尔德、鲁迅的批判性语言&#xff09;&#xff0c;用(隐喻 (一针见血...))构建解释逻辑链。…

基于 Vue 的Deepseek流式加载对话Demo

目录 引言组件概述核心组件与功能实现1. 消息显示组件&#xff08;Message.vue&#xff09;2. 输入组件&#xff08;Input.vue&#xff09;3. 流式请求处理&#xff08;useDeepseek.ts&#xff09;4. 语音处理模块&#xff08;Voice.vue&#xff09; 总结Demo Github 地址 引言…

RK3588 编译 openssl

在编译 OpenSSL 时,你需要确保你的系统环境已经配置好了所有必要的依赖和编译工具。下面是一般步骤和一些常见问题的解决方案,特别是在使用 RK3588 这类的 ARM 处理器上。 1. 安装依赖 首先,你需要安装编译 OpenSSL 所需的依赖。这通常包括编译器(如 GCC)、make 工具、Per…

常见JVM命令

1. java -XX:PrintCommandLineFlags HelloGC 作用&#xff1a;打印 JVM 启动时的命令行参数&#xff0c;包括用户显式设置的参数和 JVM 自动默认设置的参数。用于确认 JVM 实际使用的配置。 2. java -Xmn10M -Xms40M -Xmx60M -XX:PrintCommandLineFlags -XX:PrintGC -XX:Prin…

easy-poi导出and导入一对多数据excel

easy-poi导出and导入一对多数据excel 一、导入jar包 <!-- easy-poi --><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.4.0</version></dependency> 二…