STM32的HAL库串口收发不定长数据实现协议编码

  如何使用stm32的HAL库接受和发送不定长的数据,这里使用空闲中断和DMA方式,网络上有很多教程,如果遇到只接收字符串最后一个字节的,可以将main函数的DMA初始化放在UART初始化前面。
  抛去底层的位传输。多字节类型数据传输是低地址字节先传(STM32是小端,低字节在低地址),该数据的位也是按照分配的先后顺序从低位往高位填。在协议的实现中,巧用结构体、联合体来强转操作内存(字符数组),可以较为方便我们的理解,最后打包发送。协议数据的接收同理。
  要从低功耗停止模式中恢复运行状态,uart配置一次之后串口的状态会锁定,若要重新初始化串口,可参考下面代码

MX_DMA_Init();
HAL_UART_DeInit();//huart1.gState = HAL_UART_STATE_RESET;
MX_USART1_UART_Init();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值