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

两个单片机串口传一组数组,接收写得有问题,有没有大佬看一下

白云苍狗 2019-02-19 浏览量:755
TIM图片20190219230644.pngTIM图片20190219230649.png
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 那个for循环有问题 ,前面接收的数据都冲掉了,你这里应该用计数方式来把SBUF中的数据存到ReData数组中。
    • 发布于 2019-02-19
    • 举报
    • 评论 6
    • 2
    • 0
白云苍狗 回复了 捷波:ReData[m]=SBUF; //将接收发送单片机82-56行数据依次存入数组 m++; if(m>5) m=0; 回复
白云苍狗 回复了 捷波:ReData[m]=SBUF; //将接收发送单片机82-56行数据依次存入数组 m++; if(m>5) m=0; 回复
白云苍狗 回复了 捷波:ReData[m]=SBUF;m++;if(m>5) m=0;这样可行吗 回复
白云苍狗 回复了 捷波:还有就是我109行的包头0x0a是不是也存入了数组 回复
捷波 回复了 白云苍狗:这个M应该是全局变量,否则每次进来都会重新赋值 回复
白云苍狗 回复了 捷波:是全局变量,这样写我的包头判断完会不会也写入数组 回复

其他答案 数量:8
  • 那里不能用for循环,接收一个数据,你怎么能让他一次存6个呢,m做静态变量或者全局变量都可以,不能用for循环
    • 发布于2019-02-20
    • 举报
    • 评论 0
    • 1
    • 0

  • for循环里,ReData数组的所有元素每次都被重赋值了,就是这个不对。
    • 发布于2019-02-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 中断每次接收一个数据,但是你每次更新6次数组,所以是不对的
    • 发布于2019-02-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个for循环没做缓存处理,前面的数据丢弃了,所以就出错了。
    • 发布于2019-02-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 中断那里用for循环没有意义,SBUF的刷新速度没那么快的
    • 发布于2019-02-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 处理不过来,数据被覆盖丢失
    • 发布于2019-02-25
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

两个单片机串口传一组数组,接收写得有问题,有没有大佬看一下