STM32串口接收数据处理方法
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;elseUSARTReceIn = 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;
}
STM32串口接收数据处理方法相关推荐
- STM32串口接收不定长数据原理与源程序
**STM32串口接收不定长数据原理与源程序**CSDN上有很多关于STM32串口接收不定长数据的文章,但实际使用后发现照搬他们的代码,程序根本就不能正确接收数据,其中最关键的一句有问题.其余内容完全 ...
- STM32串口接收数据
参考串口接收中断处理函数: //------------------------------------------------------------------ //函数名:void USART1 ...
- stm32串口接收不定长数据_基于STM32之UART串口通信协议--接收
一.前言 1.简介 回顾上一篇UART发送当中,已经讲解了如何实现UART的发送操作了,接下来这一篇将会继续讲解如何实现UART的接收操作. 2.UART简介 嵌入式开发中,UART串口通信协议是我们 ...
- 关于stm32串口接收发送数据不完整的相关问题
如果串口接收数据,数据传输的比较快,这个时候还要使用同一个串口发送数据. 如果是在主函数中使用HAL_UART_Receive();,这个时候不管使用HAL_UART_Transmit();还是使用H ...
- stm32串口接收不到数据的一些问题
菜鸟写的经验,大佬勿喷!! 最近在搞stm32的接收通信,用的正点原子的例程,打算用串口2进行通信,然后发现各种各样的的问题.比如只能收到一个字符,只能收到首个和末尾两个字符,收到字符时死机-等等一堆 ...
- STM32 串口接收流程-串口接收中断
串口接收 串口接收流程 编程USARTx_CR1的M位来定义字长. 编程USARTx_CR2的STOP位来定义停止位位数. 编程USARTx_BRR寄存器确定波特率. 使能USARTx_CR1的UE位 ...
- STM32串口接收粉尘传感器数据
本文章主要记录STM32实现对粉尘传感器的数据采集及简单处理. 材料: 1.正点原子Mini开发板STM32f103RC 2.ZH03A激光粉尘传感器 3.USB TO TTL线(就是烧写51单片机的 ...
- 单片机串口接收的几种常用的数据处理方法
单片机串口接收的几种常用的数据处理方法 一.为什么串口接收的数据需要处理 我们在做项目的时候经常会用到串口,当我们用串口和别的设备通讯的时候就需要严格遵循通讯协议,然而,仅仅是遵循通讯协议是不够的,因 ...
- 【嵌入式系统】STM32串口通信的四种方法(基于RTOS)
目录 1.串行通信的基本参数 2.轮询方式代码效果 3.中断方式代码效果 4.中断加上时间戳方式代码及效果 5.DMA空闲中断方式接收数据 1.串行通信的基本参数 串行端口的通信方式是将字节拆分成一个 ...
最新文章
- Java高级工程师学习路径
- arthas类和类加载器相关命令:dump、classloader
- Git环境搭建与基本使用方法 (转自http://blog.csdn.net/fireelement/article/details/9618363)
- 英文版Ubuntu 16.04系统如何解决gedit中文显示乱码的问题
- 7-8 哈利·波特的考试 (25 分)(详解+思路分析)真香啊
- 量化策略回测DCCV2
- 小小的 Python 编程故事
- 趣味集算:八皇后问题
- task文件服务器无法反弹,手把手带你玩转NAS 篇二十一:小米Redmi AC2100路由器刷机padavan保姆级教程...
- 有一个测试微信删除软件叫wool,如果出现这三种情况,便可以删除这些微信好友,此操作适用所有人...
- iOS开发-Masonry约束宽高比
- Matlab中zeros和ones函数用法
- 99乘法表图片java_【Java案例】九九乘法表
- php格林威治时间,时间戳与格林威治时间互相转换
- 【自动化】手把手教你一个1秒钟归纳整理海量文件的python小技巧
- Docker测试环境笔记
- java.sql.SQLException: Access denied for user 'pc'@'localhost' (using passw
- 来自灵魂的拷问——知道什么是SQL执行计划吗?
- PS调色精灵ps插件
- ldconfig命令简介
热门文章
- SQLServer查询每年/每月/每日最新一条数据
- 面向对象思想设计简单动物乐园Java程序
- 什么时候会出现user_objects的invalid_2021年的桃花运什么时候会出现
- 【python】代码实现计算天数倒计时
- Mambo V4.6 正式发布了!
- @所有中小企业,腾讯安全免费开放基础安全能力,助力构建数字安全免疫力!
- 资产残值:折旧码残值率*原值和折旧码固定残值
- 楚留香卡在服务器信息,楚留香互通区是哪个(最全区服表让你一目了然)
- windows10下使用nginx -s reload重启nginx失败
- 引用在线jquery库