STM32学习笔记(6) 串口通信数据包解析

简介: STM32学习笔记(6) 串口通信数据包解析

串口的数据解析代码


 /**
   * 函数名:UART1_Handler()
   * 功能: 串口1的中断服务函数
   * 入口参数:无
   * 引脚: 无 
   * USART1_RX_STA:串口一的接收状态标志位
   * USART1_BUFF[USART1_Length]:缓冲区(存储数据),串口长度
   */
u16 USART1_RX_STA;
u16 USART1_BUFF[USART1_Length];
void USART1_IRQHandler()
{
    u8 Res;
    if(USART_GetITStatus(USART1,USART_IT_RXNE) != RESET)
    {
        Res=USART_ReceiveData(USART1);
        if((USART1_RX_STA&0X8000)==0)
        {
            if(USART1_RX_STA&0x4000)
            {
                if(Res == 0x0a)
                {
                    USART1_RX_STA = USART1_RX_STA|0x8000;
                }
                else
                {
                    USART1_RX_STA = 0;
                }
            }
            else
            {
                if(Res != 0x0d)
                {
                    USART1_BUFF[USART1_RX_STA&0x3FFF]=Res;
                    USART1_RX_STA++;
                    if(USART1_RX_STA>(USART1_Length-1))
                    {
                        USART1_RX_STA=0;
                    }
                }
                else
                {
                    USART1_RX_STA = USART1_RX_STA|0x4000;
                }
            }
        }
    }
}


15bit 14bit 13bit~0bit
判断0x0d 判断0x0a 数据位,用来存储数据


代码流程图推导:假设接收到 a,b , c , d , 0x0d , 0x0a(0x0d,0x0a是\r\n的ascii码)


d630311e677e3acd.jpg


  • 流程图


8912ef7121fbecc9.png


总而言之,你假设几个接收数据(a,b,c,d,0x0d,0x0a),然后带进函数里面跑一下,就能清楚它的原理


相关知识


问:串口中断中能用延迟函数吗?


答:



相关代码:串口通信数据包解析

相关文章
|
2月前
|
存储 传感器 安全
【串口通信】使用C++和Qt设计和实现串口协议解析器(二)
【串口通信】使用C++和Qt设计和实现串口协议解析器
63 0
|
2月前
|
存储 开发框架 算法
【串口通信】使用C++和Qt设计和实现串口协议解析器(一)
【串口通信】使用C++和Qt设计和实现串口协议解析器
120 0
|
1月前
|
传感器
【STM32】I2C练习,SHT3X温度传感器的数据读取
【STM32】I2C练习,SHT3X温度传感器的数据读取
|
2月前
|
Java C语言
STM32使用printf重定向到USART(串口)并打印数据到串口助手
STM32使用printf重定向到USART(串口)并打印数据到串口助手
38 0
|
4月前
|
存储 网络协议 Linux
Linux C/C++ 开发(学习笔记九 ):DNS协议与请求的实现
Linux C/C++ 开发(学习笔记九 ):DNS协议与请求的实现
55 0
|
9月前
|
前端开发
前端学习笔记202305学习笔记第三十一天-什么是mvc-前端路由解析和渲染4
前端学习笔记202305学习笔记第三十一天-什么是mvc-前端路由解析和渲染4
39 0
|
9月前
|
前端开发
前端学习笔记202305学习笔记第三十一天-什么是mvc-前端路由解析和渲染2
前端学习笔记202305学习笔记第三十一天-什么是mvc-前端路由解析和渲染2
33 0
|
4月前
|
存储 传感器
【STM32基础 CubeMX】uart串口通信
【STM32基础 CubeMX】uart串口通信
128 0
|
7月前
|
编解码 网络协议
Google-CTF-2016-Stego.pcap数据包解析
Google-CTF-2016-Stego.pcap数据包解析
28 0
|
7月前
|
芯片
STM32速成笔记(五)—串口通信
本文介绍了串口通信的概念,用途以及一些相关概念。介绍了如何进行printf重定向,如何根据接收到的特定信息,执行特定操作。此外,本文以通过上位机发送特殊指令控制LED亮灭的小项目,给出了详细的配置方法和程序设计。
123 0
STM32速成笔记(五)—串口通信

推荐镜像

更多