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

stm32f1怎么通过串口接受不定长的字符串

电院小菜鸡 2018-06-15 浏览量:1755
stm32f1怎么通过串口接受不定长的字符串
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • STM32上面有个串口空闲中断,中断名称为IDLE,在这种机制下只要总线出现超过一个字节的空闲则可以认为数据已经收完,此外可以加上串口DMA

    可以参考https://blog.csdn.net/shu_8708/article/details/73480939

    • 发布于 2018-06-16
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:23
  • 定义通信协议,数据帧头+长度+数据+校验位,按照这样的格式发送,然后接收方解析就可以了
    • 发布于2018-06-15
    • 举报
    • 评论 0
    • 1
    • 0

  • 很简单的,做一个超时处理,如果一段时间没收到数据就然后上一帧数据已经结束,modbus都是这种方式处理的
    • 发布于2018-06-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果接收和发送端都是自己可控的,可以约定一个符号表示字符串发完了。

    • 发布于2018-06-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 建议使用FIFO缓存,可以提高CPU效率,减少串口不断触发中断而占用CPU。
    • 发布于2018-06-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 我觉得吧,自己定协议的话可以试试加入起始符合停止符,如果怕出错还可以加入两字节的校验符,发射端写一个发送函数,为你要发的东西自动加上帧头帧尾和校验,接收端做解码就行
    • 发布于2018-06-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以自己建立包头跟包尾     自己定义起始符跟结束符
    • 发布于2018-06-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 加上固定的数据包头,包头放入数据长度信息
    • 发布于2018-06-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 用超时处理,如果是F0或F4就可以用空闲中断了,可惜F1没有
    • 发布于2018-06-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 串口通讯,一般都会约定好协议。

    比如固定字符串长度

    或者数据头为数据包长度数据

    或者像ModBus那种以间隔时间作为帧结束

    • 发布于2018-06-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 自定义一下发送的帧格式,设置帧头、帧尾,每次检测到帧头就开始缓存数据,直到帧尾就结束本次接受,并保存接受的字符串数据。
    • 发布于2018-06-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以用超时检或者加帧头帧位和校验额方法
    • 发布于2018-06-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 也是约定结束标识吧,一般用0x0A0x0D
    • 发布于2018-06-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 使用环形缓冲区,使接收数据做入栈出栈可以接收不定长数据,只要设置最大数据长度就可以了
    • 发布于2018-06-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 1、使用唤醒缓冲区

    2、增大缓冲区

    3、控制结束符,增加单片机处理间隔

    • 发布于2018-06-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 开一个动态栈


    还有一个方法做多个交叉缓冲,然后不断用其他线程分期取,这样可以连续下来很长时间

    • 发布于2018-06-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 应该对通讯协议约定好,然后根据协议去接受就行
    • 发布于2018-06-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 数据包添加指令头指令尾,接收时校验。
    • 发布于2018-06-19
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

stm32f1怎么通过串口接受不定长的字符串