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),然后带进函数里面跑一下,就能清楚它的原理


相关知识


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


答:



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

相关文章
|
算法
以太网CSMA/CD协议:通信原理、碰撞检测与退避机制深度解析
以太网CSMA/CD协议:通信原理、碰撞检测与退避机制深度解析
2832 1
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
2136 0
|
域名解析 网络协议 安全
反向DNS解析是从IP地址到域名的映射,主要作用于验证和识别,提高通信来源的可信度和可追溯性
在网络世界中,反向DNS解析是从IP地址到域名的映射,主要作用于验证和识别,提高通信来源的可信度和可追溯性。它在邮件服务器验证、网络安全等领域至关重要,帮助识别恶意行为,增强网络安全性。尽管存在配置错误等挑战,但正确管理下,反向DNS解析能显著提升网络环境的安全性和可靠性。
914 3
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
298 1
【通信协议讲解】单片机基础重点通信协议解析与总结之串口通信(三)
【通信协议讲解】单片机基础重点通信协议解析与总结之串口通信(三)
305 1
STM32CubeMX 串口收发一帧数据
STM32CubeMX 串口收发一帧数据
424 9
|
负载均衡 Java API
深度解析SpringCloud微服务跨域联动:RestTemplate如何驾驭HTTP请求,打造无缝远程通信桥梁
【8月更文挑战第3天】踏入Spring Cloud的微服务世界,服务间的通信至关重要。RestTemplate作为Spring框架的同步客户端工具,以其简便性成为HTTP通信的首选。本文将介绍如何在Spring Cloud环境中运用RestTemplate实现跨服务调用,从配置到实战代码,再到注意事项如错误处理、服务发现与负载均衡策略,帮助你构建高效稳定的微服务系统。
614 2
|
移动开发
技术好文:stm32寄存器版学习笔记06输入捕获(ETR脉冲计数)
技术好文:stm32寄存器版学习笔记06输入捕获(ETR脉冲计数)
1041 10
|
芯片
STM32CubeMX 串口数据收发
STM32CubeMX 串口数据收发
1602 2

推荐镜像

更多
  • DNS