串口数据包解析(带校验位)

前面文章已经知道STM32串口DMA接收不定长数据包

STM32-串口DMA不定长接受【HAL库】-优快云博客

那么接下来就需要对数据包内数据进行解析

数据包我们一般放在主循环中来解析,解析过程中,我们不希望新的数据更新影响解析(接收速度快,而且内容重复情况下),我们需要对内容上锁。

1,首先定义变量与数组

我们需要把DMA接收的数据存储到数组,同时需要标志位来判断接收、解析等是否完毕

/* USER CODE BEGIN PV */
uint8_t receiveData[50];
uint8_t rxflag = 0,Databuff_Size = 0;
/* USER CODE END PV */

定义了一个可以存放50个变量的数组,一个状态标志,一个Size用来传递接收长度

2,DMA不定长接受串口中断

2.1初始化
  HAL_UARTEx_ReceiveToIdle_DMA(&huart1,receiveData, 50);
    //初始化打开串口DMA不定长接收,指定串口和存放数组、大小
  __HAL_DMA_DISABLE_IT(&hdma_usart1_rx, DMA_IT_HT);
    //关闭串口接收过半中断

 2.2中断回调函数

void HAL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值