先传几个效果图
图片1:can主机1
图片2 can从机1
图片3:can主机2
图片4:can从机2
图片5:can主机3
图片6:can从机3
问题出现在主机发送命令0,让从机打印接收到的数据,这个时候从机接收到的第二个数据就会变成0,这里的0就是发送的cmd0里面的0,LZ验证过,其他的数据都是正确的
下面是从机的代码
主函数部分(后面的注释部分大家选择性无视掉吧)
中断部分
LZ用屏蔽的方式验证过,数据出错在中断部分,接收帧的RxMesage.Data[0]跟我定义的缓冲区ReceiveData[1]重合了。。。所以每次接收到命令数据后ReceiveData[1]就会出错。。。
更令LZ费解的是,这个重合是会移位的,LZ试过把ReceiveData[1]赋给另外一个变量,然后在打印前再赋值回去给ReceiveData[1],这个时候ReceiveData[2]的数据就出错了。。。而且这个问题不是第一次出现了,LZ刚开始的时候会让从机接收到数据以后再返回给主机,然后主机打印数据,这里在主机开了一个中断来实现,这个时候主机的发送数据第一帧的最后一位也就是data[7]跟第二帧第一位也就是Data[8]又重合了。。。而且其他数据都是正确的。。。LZ同样是用屏蔽代码检查出来导致问题的原因是开了那个接收中断,后来就把这部分删掉了
求各位大神指点一下。。。。
|