调试CAN总线时发现电机驱动板返回的CAN数据帧的ID号异常,为0x518。依照电机官方的说明,正确的ID是0x205或0x206。
经过一翻折腾,发现问题出在Keil:可能因为这个程序是用之前的程序改来用的,和Debugger有关的文件存在某些数据影响到了Watch1窗口的正常显示。因为进入Debugger后Watch1窗口里面已经有之前留下的RxMessage变量,于是就直接从这里看板子接收的CAN数据了。
解决方法有两个:
- 最简单的,就是在Watch Window删掉RxMessage变量,重新添加。具体包括拖动到所有变量的最下面、右键添加到Watch2
- Ctrl+B打开断点设置,先后测试期望的ID值(0x518)和预测的ID值(0x205或0x206),然后在没有其他断点的情况下运行。当RxMessage.Id达到某个设定的断点值的时候,就会停下来——这个方法可以用来确定Debugger有没有显示错误。