• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

stm32串口hal库接受不定长字节的方法?

work11 2018-09-23 浏览量:3710
stm32串口hal库接受不定长字节的方法?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 也就是每一帧都是字节不定长的协议了

    1、

    可以使用串口空闲中断,进中断后,一帧数据就算是完了

    2、

    也可以每收一个字节进行一次判断,通讯协议中增加帧结束标志,或是校验位

    • 发布于 2018-10-21
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:12
  • HAL_UART_DMAStop()是同时关收发DMA

    只关闭接收的函数: HAL_UART_AbortReceive(); 该函数的两个工作内容:

    1. 先关闭接收DMA,HAL_DMA_Abort(huart->hdmarx);
    2. 置位RX ready状态,huart->RxState = HAL_UART_STATE_READY;
    忽略了错误标志和IT标志处理,最保险的方式还是使用HAL_UART_AbortReceive()函数。


    具体可以参考

    https://blog.csdn.net/gongyuan073/article/details/81103011​

    • 发布于2018-09-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 怎么判断字符长度,自己定好协议写个函数就行了
    • 发布于2018-09-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 设置一定大小的缓冲区,然后从缓冲区中提取,或者使用DMA接收。
    • 发布于2018-09-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以采用串口空闲中断的方式实现,串口发完一帧数据即发生一次空闲中断,依据此进行串口不定长接收。

    • 发布于2018-09-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 自己写个协议里面放进长度信息,串口就一个字节一个字节接受就好。处理数据时候判断数据完整性
    • 发布于2018-09-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个需要没接受一次数据就产生一次中断,然后压入缓冲区
    • 发布于2018-09-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 在你串口中断里面自己定义一个长度校验,检查你的数据长度并处理
    • 发布于2018-09-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以用串口的空闲中断来处理,当接收完数据会自动产生中断
    • 发布于2018-10-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 通常使用串口空闲中断配合DMA实现。
    • 发布于2018-10-22
    • 举报
    • 评论 0
    • 0
    • 0

  • 你路使用串口空闲中断和DMA的方式来做的
    • 发布于2018-10-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 常用的就是DMA加一个串口空闲中断来处理
    • 发布于2018-10-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 不定长的数据传输都是用DMA搭配空闲中断接受数据
    • 发布于2018-10-27
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

stm32串口hal库接受不定长字节的方法?