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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 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),然后带进函数里面跑一下,就能清楚它的原理


相关知识


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


答:



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

目录
打赏
0
0
0
0
0
分享
相关文章
|
10月前
|
【STM32】I2C练习,SHT3X温度传感器的数据读取
【STM32】I2C练习,SHT3X温度传感器的数据读取
148 0
STM32 Customer BootLoader 刷新项目 (一) STM32CubeMX UART串口通信工程搭建
本文介绍了基于STM32的Customer BootLoader刷新项目的第一部分:使用STM32CubeMX搭建UART串口通信工程。项目采用正点原子探索者v2开发板,通过USB串口与上位机通信,实现固件刷新功能。主要内容包括: 1. 硬件原理图介绍:详细描述了开发板的串口连接方式及电路图。 2. STM32CubeMX工程搭建:从创建新工程、配置系统时钟、USART串口设置到生成代码,一步步详细说明。 3. 代码编写:展示了如何使用HAL库实现串口接收和发送数据,并提供了main.c的完整代码。 4. 工程下载和调试:编译并下载工程到开发板,通过串口调试助手验证通信功能。
STM32 Customer BootLoader 刷新项目 (一) STM32CubeMX UART串口通信工程搭建
|
8月前
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
1123 0
http数据包抓包解析
http数据包抓包解析
http数据包抓包解析课程笔记
http数据包抓包解析课程笔记
|
8月前
STM32CubeMX 串口收发一帧数据
STM32CubeMX 串口收发一帧数据
108 9
|
8月前
|
STM32CubeMX 串口数据收发
STM32CubeMX 串口数据收发
245 2
|
8月前
|
stm32f407探索者开发板(十八)——串口通信实验讲解(USART_RX_STA流程图详解)
stm32f407探索者开发板(十八)——串口通信实验讲解(USART_RX_STA流程图详解)
697 0
|
8月前
stm32f407探索者开发板(十六)——串行通信原理讲解-UART
stm32f407探索者开发板(十六)——串行通信原理讲解-UART
450 0

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等