单片机串口通过查询接收数据,同时具备接收超时、异常判断,常规通用处理算法实现

news/2024/10/18 17:13:25/

单片机串口通过查询接收数据,同时具备接收超时、异常判断,常规通用处理算法实现
1、实现过程
(1)初始化串口:首先,需要配置串口的基本参数,如波特率、数据位、停止位和校验位等。这通常涉及到GPIO引脚的配置(如PA2为发送引脚,PA3为接收引脚),以及USART的初始化。

(2)设置超时时间:确定一个合适的超时时间,这个时间应该根据数据的传输速度和预期的数据量来设定。超时时间用于判断串口是否在规定时间内接收到数据。

(3)查询接收数据:在串口初始化后,使用查询的方式检查串口是否接收到数据。这通常涉及到读取USART的状态寄存器,检查是否有数据可用。

(4)实现超时判断:在查询接收数据的过程中,需要维护一个计时器(可以使用STM32的定时器或者软件延时函数)。每次查询时,如果发现有数据接收,则重置计时器;如果没有数据接收,则计时器累加。当计时器达到设定的超时时间时,认为接收超时。

处理接收到的数据:如果接收到数据且未超时,则处理这些数据,比如存储到缓冲区或者进行进一步的处理。

(5)清理和重置:在每次接收完成后,需要清理串口的状态,重置相关变量,以便进行下一次的接收。
2、代码实现过程
#include "stm32f1xx_hal.h"  
  
#define USARTx USART1 // 假设使用USART1  


http://www.ppmy.cn/news/1401877.html

相关文章

使用 CSS 实现多立方体悬停颜色效果实现

使用 CSS 实现多立方体悬停效果实现 效果展示 CSS 知识点 filter 属性的 hue-rotate 值运用使用 CSS 实现立方体 场景布局分析 从效果图可以看出,要实现 3*3 的立方体集合,我们需要考虑一下怎么安排小立方体的布局。我这里的做法是使用span实现单个小…

ArrayList 与 List的区别 数组与集合的区别

ArrayList是一种非泛型集合类型,允许用户存储任何数据类型的对象, List 是一种泛型集合类型,允许用户存储声明时 List 指定的数据类型的对象。它是一个非常强类型的集合, var arrayList new ArrayList(); arrayList.Add(1); // …

时序约束、分析、优化相关的题目汇总

FPGA项目中你是怎么时序优化的? 什么是建立时间,什么是保持时间? 解释一下建立时间,保持时间,不满足时会发生什么? 如何修复建立时间和保持时间违例? 什么是亚稳态? 亚稳态产生的原因…

【jenkins+cmake+svn管理c++项目】jenkins回传文件到svn(windows)

书接上文:创建一个项目 在经过cmakemsbuild顺利生成动态库之后,考虑到我一个项目可能会生成多个动态库,它们分散在build内的不同文件夹,我希望能将它们收拢到一个文件夹下,并将其回传到svn。 一、动态库移位—cmake实…

解决kubesphere流水线docker登陆错误http: server gave HTTP response to HTTPS client

kubesphere DevOps流水线中,在登录私有的harbor仓库时,报以下错误 docker login 111.230.19.120:80 -u admin -p test123. WARNING! Using --password via the CLI is insecure. Use --password-stdin. Error response from daemon: Get "https://…

2024年京东云主机租用价格_京东云服务器优惠价格表

2024年京东云服务器优惠价格表,轻量云主机优惠价格5.8元1个月、轻量云主机2C2G3M价格50元一年、196元三年,2C4G5M轻量云主机165元一年,4核8G5M云主机880元一年,游戏联机服务器4C16G配置26元1个月、4C32G价格65元1个月、8核32G费用…

Ubuntu上安装d4rl数据集

Ubuntu上安装d4rl数据集 D4RL的官方 github: https://github.com/Farama-Foundation/D4RL 一、安装Mujoco 1.1 官网下载mujoco210文件 如果装过可以跳过这步 链接:https://github.com/deepmind/mujoco/releases/tag/2.1.0 下载第一个文件即可。我这里是在windo…

node.js项目初始化操作

项目环境Vscode 1.新建一个文件夹node.js(xx.js) 2.右键点击node.js,点击打开终端 我在VScode打开终端 输入npm init初始化项目没反应。 解决方法:进入文件夹node.js,出入cmd跳转到终端 重新输入npm init命令 正确结果如下图 后续命令按下…