搞单片机,肯定少不了串口的使用,不管是调试也好,与其他设备通信也好,是我们不可或缺的利器。接下来就分享一下本人在项目中使用串口接收数据及处理的方法。

先介绍下主要思路,首先需要开一个定时器,我们接收串口端发来的数据,这个时候会产生接收中断,在中断里面我们做三件事,1.启动定时器;2.清除时间计数器;3.接收数据存放到事先定义好的缓存buffer;然后我们在定时器中断里面也做三件事:1.累加时间计数器;2.判断时间计数器是否超过我们设定的阈值(超过,说明等待了一段时间没有收到数据,判定数据接收完毕,具体时间是具体情况而定)3.判定接收完毕数据之后,清除计数器,处理接收数据的buffer,清除buffer,关闭定时器;这是主要思路,也是最为重要的部分,最后给出我的代码,可以移植到任何处理器上面,非常实用。这里在强调一下定时器的问题,我们有两种用法,一是,需要用到定时器就打开,不用就关闭,上面介绍的思路是这种使用方法;二是,打开定时器之后不关闭,让其一直运行,这样的好处是我们可以用一个定时器处理多个串口通信问题,当做一个时基,因为实际项目中很多情况都是同时会使用多个串口;下面我给的代码用的是第二种方法,了解了思路其实是很简单的事情。

串口数据结构体:

处理接口函数

串口中断处理

定时器中的数据处理,里面只是把接收到的数据原封不动传回去,使用send_str()函数,在此地方大家可以加入自己数据处理的方法

上述接口函数的具体实现

至此结束,希望对大家有所帮助,欢迎分享大家自己的想法!!!

万能的串口数据接收及处理方法相关推荐

  1. 【Qt串口调试助手】1.2 - 串口数据接收不发生换行,CH340 / CP2102 多硬件兼容

    上一篇提到:对串口接收的显示,使用的是当前位置插入+移动鼠标光标到末尾的方式.这种方法可以有效解决 串口数据接收发生换行的问题,并且解决 CH340 / CP2102 多硬件显示结果不一致的问题.那有 ...

  2. HAL库教程6:串口数据接收

    STM32的串口接收机制   与阻塞式发送函数HAL_UART_Transmit配套,有个阻塞式的接收函数,HAL_UART_Receive,但此函数不常用,串口接收通常使用中断函数HAL_UART_ ...

  3. 串口数据实时处理:定时器+串口 判断串口数据接收完成

    使用背景: 之前在做项目的时候,串口接收的数据要及时进行处理,虽然采用了自定义的串口协议,但是协议的包尾只有一个字节,经常判断不准数据是否接受完毕,所以就采用计时器+串口的方式来判定串口是否接受完成. ...

  4. STM32G070RBT6基于Arduino框架下串口数据接收使用示例

    STM32G070RBT6基于Arduino框架下串口数据接收使用示例 相关篇<STM32G070RBT6基于Arduino串口的使用>

  5. moxa Nport配置tcp/udp实现数据发送和回传(补充数据接收错乱处理方法)

    moxa Nport配置tcp/udp实现数据发送和回传–记一次吐血经历 目的 现有一内网环境需要连外网进行钉钉推送,开始使用串口连接实体电脑的方式实现,现需要撤除实体电脑,故选用串口服务器的方式实现 ...

  6. STM32 —— 串口数据接收

    STM32 -- 串口接收数据 我们已经在前面的博客中讲过了串口通信中发送数据和中断的一些基本原理,这里主要介绍串口接收数据的相关内容 定长字符串的接收 当接收单字节时,我们就可以使用最简单的接收方式 ...

  7. JY901串口数据接收与处理(Python)

    最近在用JY901做一些实验,关于JY901网上有很多资料了,也有上位机软件,可以方便的查看输出数据.我想做的是对输出的角速度进行积分,对比积分后的结果与输出的角度,如果数据都比较准确地话,那么他们应 ...

  8. 关于串口数据接收出错问的问题(RS232、RS422、UART)

    这两天调试串口驱动,串口驱动应该是很简单的啊,但是发现数据接收的时候,总是偶尔会出现错误,经过不断的排查,终于找到了问题的关键所在. 一段串口的verilog代码如下: module uart_rx( ...

  9. C#对串口数据接收、发送的处理

    最近在做与设备进行串口通信交互的项目,然后简单记录一下过程 使用的winform应用程序 方式1 1.声明串口对象 或者直接在工具箱拖拽串口控件 本篇文章不采用拖拽工具箱控件 直接声明对象 声明串口对 ...

最新文章

  1. ioc spring 上机案例_IOC(控制反转)—最后的爱,是放手
  2. JBPM流程部署校验之java利用XSD校验XML
  3. 数组——两个有序数组的合并
  4. vim简单命令教程-firstblood
  5. Linux awk命令使用方法
  6. 计算机组成原理综合题,2013计算机组成原理复习题.doc
  7. 重启手机出现机器人加一个叹号_解决win10上不了网出现红叉,网卡驱动异常代码56的问题...
  8. 从JDK源码角度看Short
  9. 【Spring学习笔记-MVC-12】Spring MVC视图解析器之ResourceBundleViewResolver
  10. PHP模板引擎Smarty内建函数section,sectionelse用法详解
  11. c# combobox 绑定枚举方式
  12. SQL:postgresql中实现查询某字段总数量和该字段不同值各自的数量
  13. Kubernetes Ingress 日志分析与监控的最佳实践 1
  14. [ZT]用CSC.exe来编译Visual C#的代码文件,解释CSC参数和开关的具体作用
  15. 捷宇高拍仪XY530 网页集成总结
  16. 3.3.3 使用集线器的星形拓补
  17. Python 爬取科技部计划申报指南pdf文件并作词频分析
  18. 将Linux 标准输出,错误输出重定向到文件
  19. 人工智能初学笔记系列(1):基础概念与进化流程
  20. 数据结构-循环双链表

热门文章

  1. Velocity初尝试
  2. 三维空间点云拟合问题
  3. ERROR: must be superuser to alter replication roles or change replication attribute
  4. 抖音怎么使用鸿蒙系统,又好用又易用的鸿蒙OS来了 华为官方抖音账号参与新系统相关话题...
  5. 基于 xNet 通信框架搭建的简易分布式系统 Demo ~~
  6. LoginController________
  7. “嘀哩哩,等灯等灯”,工厂安全生产的提示音
  8. 终于把「内卷」和「努力」区别讲明白了!
  9. 网络安全篇 MPF基本状态监控特性-22
  10. oracle数据库安装卡在 正在保存产品清单 70%进度条