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

两个单片机串口传一个数组的数据,我写老是不对,要怎么改!急

白云苍狗 2019-02-18 浏览量:845

微信图片_20190218151907.png微信图片_20190218151915.png

这样写接收到的数据存不进数组!!!

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 感觉你的那三个接收状态的变量应该设置为静态变量,或者是全局变量。因为你的程序接收第一个数据的时候各个变量被置位,但是中断执行完毕返回后,局部变量被释放,这个时候那些状态也就不存在了。如果你编程经验不多的话,建议你先传两个字节的数组,然后在慢慢增加传输的字节数。
    你的问题说白了就是通讯协议问题,一些串口通讯之前应该定义一个完善的协议,和数据包规则。不然越写越找不到北。。。。。。

    • 发布于 2019-02-18
    • 举报
    • 评论 0
    • 2
    • 0

其他答案 数量:6
  • 是不是同步的问题?我想你至少应该编一个格式,比如提供引导符、有效长度、内容、校验,这种格式会比较合适吧?
    • 发布于2019-02-18
    • 举报
    • 评论 0
    • 1
    • 0

  • 你把state,countsigh三个变量定义成全局变量就好了
    • 发布于2019-02-18
    • 举报
    • 评论 3
    • 0
    • 0
白云苍狗 回复了 yhj416606438 :我只有这个函数用到他们三个 回复
yhj416606438 回复了 yhj416606438 :那你这样吧,在三个u8前面加 static 回复
yhj416606438 回复了 yhj416606438 :一般都是其他函数读取标志位和数据长度的,所以肯定是全局变量,要么就是你进去调试模式看寄存器值 回复

  • 静态变量的问题吧,一般这样的变量会跳出后销毁的。
    • 发布于2019-02-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 有可能是接收中断把发送时候的SBUF寄存器数据打乱了,你试试加标志位或者延时之类的确保数据不冲突?
    • 发布于2019-02-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 将那个count state 作为全局变量来用,不要作为局部变量,不然下次进来那个值默认就是0了
    • 发布于2019-02-24
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

两个单片机串口传一个数组的数据,我写老是不对,要怎么改!急