STM32串口接收数据处理方法

2023-05-16

STM32串口接收数据处理方法

STM32串口接收定长数据处理方法

STM32串口接收定长数据的处理方法非常简单,我目前做项目都是用的这个,也可用做处理MODBUS协议,直接上代码。

void USART1_IRQHandler(void)                	//串口1中断服务程序
{
	u8 Res;
	if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断
	{
		USART_ClearITPendingBit(USART1,USART_IT_RXNE);     //清中断
		Res =USART_ReceiveData(USART1);	//读取接收到的数据
		switch(USARTReceIn)
		{
			case 0:
				if((Res==SW_ID)||(Res==255))
					USARTReceBuff[USARTReceIn++] = Res;
				else
					USARTReceIn = 0;
				break;
		
			default:
				USARTReceBuff[USARTReceIn++] = Res;
				break;
		}
		if(USARTReceIn >= 8)
		{
			USARTReceFullFlag = 1;	 
		}
     }
} 

执行逻辑解释

首先定义一个全局变量接收完成标志位USARTReceFullFlag,假如我需要接收数据长度是8,那么在串口中断接收到数据长度>=8时,就让这个标志位置1,也可在串口中断函数中判断接收到的数据头。
然后在其他地方执行时,直接判断标志位,进行处理相关内容,注意:需要把标志位和接收序列清零。

if(USARTReceFullFlag)
{
	if((USARTReceBuff[2] == 0x01)&&(USARTReceBuff[6] == 0xcc)&&(USARTReceBuff[7] == 0xdd))
	{
		Play_Choice_voice(0x01);
	}
	USARTReceFullFlag = 0;
	USARTReceIn = 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32串口接收数据处理方法 的相关文章

  • 初始化 ST-Link 设备时出错 - 无法连接到设备

    我目前正在使用 ST Link 调试器对我的 STM32F3 Discovery 板进行编程 我使用的IDE是Atollic TrueStudio 5 5 2 现在我面临一个非常奇怪的问题 那就是我不断收到消息 初始化 ST Link 设备
  • 在没有 IDE 的情况下如何使用 CMSIS?

    我正在使用 STM32F103C8T6 并想使用 CMSIS 这本质上只是寄存器定义 没有代码 让我的生活更轻松 同时仍保持在较低水平 问题是我不知道如何安装该库以便在命令行上使用 Makefile 使用 所有文档似乎都与特定于供应商的 I
  • STM32 F072上的软件如何跳转到bootloader(DFU模式)?

    STM32应用笔记2606对此进行了讨论 但没有简单的代码示例 该答案已使用 IAR EWARM 在 STM32F072 Nucleo 板上进行了测试 这个答案使用 STM32标准外设库 仅此而已 请注意 验证您是否成功进入引导加载程序模式
  • 139-基于stm32单片机老人居家监护报警系统Proteus仿真+源程序

    资料编号 139 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 MQ4传感器 电位器模拟 MQ2传感器 电位器模拟 蜂鸣器 电机 制作一个基于stm32单片机老人居家监护报警系统Proteus仿真 2 通过MQ2传
  • 137-基于stm32单片机智能保温杯控制装置Proteus仿真+源程序

    资料编号 137 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DS18B20传感器 电机 制作一个基于stm32单片机智能保温杯控制装置Proteus仿真 2 通过DS18b20传感器检测当前保温杯水的温度 并且
  • 136-基于stm32单片机家庭温湿度防漏水系统设计Proteus仿真+源程序

    资料编号 136 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 蜂鸣器 制作一个基于stm32单片机家庭温湿度防漏水系统设计Proteus仿真 2 通过DHT11传感器检测当前温湿度 并且显示到L
  • 135-基于stm32单片机超声波非接触式感应水龙头控制系统Proteus仿真+源程序

    资料编号 135 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 电机 超声波传感器 制作一个基于stm32单片机超声波非接触式感应水龙头控制系统Proteus仿真 2 通过DHT11传感器检测当前
  • STM32用一个定时器执行多任务写法

    文章目录 main c include stm32f4xx h uint32 t Power check times 电量检测周期 uint32 t RFID Init Check times RFID检测周期 int main Timer
  • STM32F103

    提示 来源正点原子 参考STM32F103 战舰开发指南V1 3PDF资料 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 开发环境硬件普中科技 接线图在g
  • [MM32硬件]搭建灵动微MM32G0001A6T的简易开发环境

    作为学习单片机的经典 自然是通过GPIO点亮LED 或者是响应按钮的外部中断例程 这我们看看SOP8封装的芯片MM32G0001A6T得引脚 除了VDD和GND固定外 我们可以使用PA14 PA1 PA13 PA15 PA2 PA3这六个G
  • 解决KEIL编译慢问题

    两种方案 使用v6版本的ARM Compiler 如果v6版本编译不过 必须使用v5版本的 则可以勾选掉Browse Information选项 提升很明显 1分多钟能优化到几秒 看代码量 但是这个有个弊端 在KEIL中会影响函数跳转 建议
  • 跟着野火学FreeRTOS:第一段(任务定义,切换以及临界段)

    在裸机系统中 系统的主体就是 C P U CPU CP U 按照预先设定的程序逻辑在 m a i n
  • STM32 暂停调试器时冻结外设

    当到达断点或用户暂停代码执行时 调试器可以停止 Cortex 中代码的执行 但是 当皮质停止在暂停状态下执行代码时 调试器是否会冻结其他外设 例如 DMA UART 和定时器 您只能保留时间 r 取决于外围设备 我在进入主函数时调用以下代码
  • STM32F207 I2C 测试失败

    我正在使用 STM32F207 微控制器在 STM3220G EVAL 板上学习嵌入式开发 我尝试通过连接同一芯片上的两个 I2C2 和 I2C3 模块并发送 接收字符来测试 I2C 接口 这是我当前编写的代码 使用 mdk arm 5 i
  • 嵌入式开发--STM32G4系列片上FLASH的读写

    这个玩意吧 说起来很简单 就是几行代码的事 但楞是折腾了我大半天时间才搞定 原因后面说 先看代码吧 读操作 读操作很简单 以32位方式读取的时候是这样的 data IO uint32 t 0x0800F000 需要注意的是 当以32位方式读
  • STM32H5 Nucleo-144 board开箱

    文章目录 开发板资料下载 目标 点亮LD1 绿 LD2 黄 和LD3 红 三个LED灯 开箱过程 博主使用的是STM32CubeMX配置生成代码 具体操作如下 打开STM32CubeMX File gt New project 选择开发板型
  • STM32 Nucleo 上的上升沿中断多次触发

    我正在使用 STM32 NUCLEO F401RE 微控制器板 我有一个扬声器 经过编程 当向上 向下推操纵杆时 可以按设定的量改变频率 我的问题是 有时 通常 当向上 向下推动操纵杆时 频率会增加 减少多次 这意味着 ISR 正在执行多次
  • PWM DMA 到整个 GPIO

    我有一个 STM32F4 我想对一个已与掩码进行 或 运算的 GPIO 端口进行 PWM 处理 所以 也许我们想要 PWM0b00100010一段时间为 200khz 但随后 10khz 后 我们现在想要 PWM0b00010001 然后
  • 使用 STM32 USB 设备库将闪存作为大容量存储设备

    我的板上有这个闪存IC 它连接到我的STM32F04 ARM处理器 处理器的USB端口可供用户使用 我希望我的闪存在通过 USB 连接到 PC 时被检测为存储设备 作为第一步 我在程序中将 USB 类定义为 MSC 效果很好 因为当我将主板
  • 使用 STM32F0 ADC 单独读取不同的输入

    STM32F072CBU 微控制器 我有多个 ADC 输入 并且希望单独读取它们 STMcubeMX 生成样板代码 假设我希望按顺序读取所有输入 但我无法弄清楚如何纠正这个问题 这篇博文 http blog koepi info 2015

随机推荐

  • BGP—origin属性的应用

    BGP origin属性 1 origin 是公认必遵属性 公认必遵 xff1a 只要不人为修改 xff0c 该属性就不会自己改变 origin属性描述该路由是如何成为BGP路由的 符号作用i通过network生成的BGP路由 xff1f
  • MPLS-虚拟专用网 实验(分支之间可以互通)

    1 MPLS V P N实验 xff08 分支之间可以互通 xff09 实验要求 xff1a 1 A1和A2可以通过MPLS V P N打通 xff0c B1和B2可以打通 xff0c A不能访问B 2 R2为ISP 3 R6可以telne
  • vmware ESXi中安装windows11(解决VMware安装Windows11报错+win11跳过联网操作)

    文章目录 vmware ESxi 安装windows111 安装步骤2 Vmware安装win11报错解决方案2 1 问题产生原因 xff1a 2 2 解决方案 xff1a 3 Windows11安装过程中跳过联网操作 xff08 在无法连
  • python 修改ip地址

    安装包 pip install wmi pip install pywin32 实现 import wmi Obtain network adaptors configurations nic configs 61 wmi WMI Win3
  • Postman前置脚本-全局变量和环境变量

    全局变量和环境变量 61 61 全局变量和环境变量 61 61 Postman 请求前置脚本时间戳案例工作原理 全局变量和环境变量 全局变量 概念 xff1a 在 Postman 全局生效的变量 xff0c 全局唯一 设置 xff1a 代码
  • kubernetes❀集群环境搭建

    kubernetes 集群环境搭建 2 kubernetes集群环境搭建2 1 前置知识点2 2 kubeadm 部署方式介绍2 3 安装要求2 4 最终目标2 5 准备环境2 6 环境初始化2 6 1 检查操作系统的版本2 6 2 主机名
  • kubernetes❀资源管理

    kubernetes 资源管理 3 资源管理3 1 资源管理介绍3 2 YAML语言介绍3 3 资源管理方式3 3 1 命令式对象管理3 3 2 命令式对象配置3 3 3 声明式对象配置 3 资源管理 3 1 资源管理介绍 在kuberne
  • Kubernetes❀实战入门

    Kubernetes 实战入门 4 实战入门4 1 Namespace4 1 1 查看 4 1 2 创建 4 1 3 删除 4 1 4 配置方式 4 2 Pod4 2 1 创建并运行4 2 2 查看pod信息4 2 3 访问Pod4 2 4
  • Qt重定向问题

    概念 在我们使用软件时大多使用release版本 xff0c 这样在使用过程中的调试信息就不会显示出来 xff0c 为了将调试信息打印在界面上或者放在文件中保存起来我们就可以使用重定向的技术 在QT的帮助文档 xff1a qInstallM
  • VSUDP通信

    好久没弄VS的UDP通信了 xff0c 使用方式都忘记的差不多了 今天遇到了正好学习一下 UDP理论 xff1a UDP参考链接 xff1a socket函数 为了执行网络输入输出 xff0c 一个进程必须做的第一件事就是调用socket函
  • sockaddr_in结构体的说明(成员:sin_family、sin_addr、sin_zero)

    sockaddr in是系统封装的一个结构体 xff0c 具体包含了成员变量 xff1a sin family sin addr sin zero 这个结构体被封装在ws2def h中 xff0c 具体的代码如下 xff1a typedef
  • 字节、位与二进制表示

    前言 仅针对JAVA xff0c 总结几个知识点 字节与位 1字节 xff08 byte xff09 61 8位 xff08 bit xff09 每个bit位非0即1 xff0c 即二进制表达中的0或1 xff0c 0001中每个 0 和
  • windows配置tensorflow python object detection 环境

    option 1 pip install lt binary gt pip install upgrade https storage googleapis com tensorflow mac cpu tensorflow 1 12 0
  • 顺序表递增有序,插入元素x后仍递增有序

    思想 xff1a 1 xff09 先找到x元素的插入位置 xff08 顺序表从左到右依次比较 xff0c 若A元素大于x元素 xff0c 那么x元素插入的位置就是A元素所在的位置 xff09 2 xff09 将A元素所在的位置的元素以及它之
  • 猜数游戏,系统想一个数,我们来猜

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • 输入多个数(输入-1为结束标志),计算这多个数的平均数

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • 计算n的阶乘

    在 include span class token operator lt span stdio span class token punctuation span h span class token operator gt span
  • 判断一个数是否是素数

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • HTTP报文是什么

    x1f4e2 x1f4e2 如果说http是因特网的信使 xff0c 那么http报文就是他用来送信的包裹了 1 x1f4da 什么是报文 在度娘的介绍中 x1f4e3 报文 message 是网络中交换与传输的数据单元 xff0c 即站点
  • STM32串口接收数据处理方法

    STM32串口接收数据处理方法 STM32串口接收定长数据处理方法 STM32串口接收定长数据的处理方法非常简单 xff0c 我目前做项目都是用的这个 xff0c 也可用做处理MODBUS协议 xff0c 直接上代码 span class