串口接收无协议判断,在接收整包数据后再统一进行处理的软件算法实现框架。

1、背景 

在串口数据编程中,由于存在不同的协议,通常多采用状态机解决方案,但是不同帧格式不同,最好的方式是在接收时不进行协议和接收数据长度的判断,实现无协议接收,串口接收不定长数据,且没有特定的协议来标识数据包的开始和结束,通常需要定义一些规则或者条件来识别数据的完整性。常用的解决方式是假设数据在一段时间内没有新的字节接收就认为是完整的,或者可以设定一个特定的超时时间。

2、基于STM32进行该编程模型的框架实现方案

(1)初始化串口和定时器

首先,我们需要初始化串口和定时器。定时器用于检测数据接收的超时

void UART_Init(void)  
{  
    /* 初始化USART,例如USART1 */  
    huart1.Instance = USART1;  
    huart1.Init.BaudRate = 115200;  
    huart1.Init.WordLength = UART_WORDLENGTH_8B;  
    huart1.Init.StopBits = UART_STOPBITS_1;  
    huart1.Init.Parity = UART_PARITY_NONE;  
    huart1.Init.Mode = UART_MODE_TX_RX;  
    huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;  
    huart1.Init.OverSampling = UART_OVERSAMPLING_16;  
    HAL_UART_Init(&huart1);  
  
    /* 使能USART接收中断 */  
    HAL_UA

最近更新

  1. TCP协议是安全的吗?

    2024-03-24 16:54:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-24 16:54:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-24 16:54:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-24 16:54:03       20 阅读

热门阅读

  1. c语言函数大全(O开头)

    2024-03-24 16:54:03       17 阅读
  2. ARPACK-ng安装教程

    2024-03-24 16:54:03       19 阅读
  3. 游戏开发全过程游戏外包

    2024-03-24 16:54:03       20 阅读
  4. c++ struct解释

    2024-03-24 16:54:03       21 阅读
  5. 高精度算法

    2024-03-24 16:54:03       19 阅读
  6. 蓝桥杯2019年第十届省赛真题-不同的子串

    2024-03-24 16:54:03       25 阅读
  7. MySQL查询

    2024-03-24 16:54:03       18 阅读
  8. AI 工具能检测到医生未发现的癌症征兆

    2024-03-24 16:54:03       16 阅读
  9. 蓝桥杯基础数论(Python组)

    2024-03-24 16:54:03       19 阅读
  10. python 运算符

    2024-03-24 16:54:03       18 阅读
  11. C语言归并排序的实现

    2024-03-24 16:54:03       19 阅读