串口数据接收

今天来讨论一下串口接收该如何去写,我们在嵌入式中需要使用很多其他的外设,大部分信息交流都是使用的串口,数据格式也是丰富多样的。像什么数据帧头帧尾固定的,帧头长度固定,帧头固定等等,除了那些比较极端的像只有帧头固定这种使用空闲中断其他情况便可以使用下面讲述的方法。

通常我们在串口中断接收一字节的数据后便将其存入到数组中,注意的是数组的设定容量一定要大于数据接收的容量,然后我们搭配一个变量flag,flag=0,他的作用是记录当前是第几个字节,然后我们使用if进行判断和比较,用以下格式进行接收即可。帧头确定长度确定、帧头确定帧尾确定满足以上任意条件都可以,只有那些帧头确定然后没有其他任何有效信息情况使用空闲中段。

c 复制代码
flag = 0
REC = X         /* x为串口中断中接收到的数据 */
if(flag == 0)   /* 第一个字节数据 */
{
	if(X == 帧头)
	{
		flag++;  
    }else
    {
        flag = 0;/* 错误数据重新接收 */
    }
}else if(flge ==1 )
{

		/* 类推	*/


}

最后按照公式CRC校验规范进行CRC校验即可。

相关推荐
youcans_1 小时前
【STM32C5教程】(3)GPIO 按键输入实验
stm32·单片机·嵌入式硬件
俊基科技3 小时前
回音消不掉、底噪压不住、主板还对不上口?——A-59P 多功能语音处理模组技术解析
嵌入式硬件·回音消除·ai降噪模块
北京盛世宏博3 小时前
通信异常深度排查:以太网温湿度设备 TCP 粘包、UDP 丢包根治方案
单片机·网络协议·tcp/ip·udp·以太网·传感器·温湿度
蓝天居士4 小时前
PY32F系列MCU在串口接收时跑飞的根因分析(2)
单片机·嵌入式硬件
wuyk5557 小时前
嵌入式驱动开发:量产级工程化实战(第9篇)——低功耗下的通信可靠性
c语言·驱动开发·stm32·单片机·嵌入式硬件
创界工坊工作室7 小时前
24-基于单片机的仓鼠养殖环境监控系统设计
stm32·单片机·嵌入式硬件·proteus
碧海银沙音频科技研究院8 小时前
基于炬芯ATS录音卡BLE控制协议
人工智能·嵌入式硬件·算法·语音识别
comyccccc9 小时前
PCB走线设计秘籍:从载流到3D预览全解析学习笔记
单片机·嵌入式硬件
俊基科技9 小时前
A-59 工业级 AI 语音处理模组:100 dB 消回音 + 神经网络降噪的工程实践
嵌入式硬件·神经网络·硬件开发·语音模块·回音消除·拾音降噪
endeavor129 小时前
can总线(五)
c语言·stm32·单片机·can