讲个笑话,我因为一个for循环没写好,忙了整整一下午。
[复制链接]
本帖最后由 littleshrimp 于 2021-7-15 09:00 编辑
大概是这样的,我想把二维数组rx_data某行里的某段数据添加到key的指定位置
memcopy(key,0,rx_data[0],5,3);
memcopy(key,3,rx_data[1],2,6);
memcopy(key,9,rx_data[2],2,6);
memcopy(key,15,rx_data[3],2,1);
因为没找到合适的函数,我就自己写了一个下边这样的2B函数
key是一个16字节数据,每次输出的数据都不对,因为我原来使用vscode调试gd32vf103,还没找到在线仿真的功能(还没找到一个好用的方法),只能一次次编译下载后通过串口查看数据。
弄了一段时间没找到原因,然后想着还是用NucleiStudi的在线调试功能吧,装了NucleiStudi,GD32官方的CAN例程移到项目里时发现eclic_irq_enable函数不可用。
检索了nuclei_sdk里的所有文件,发现只有一处匹配的地方,MD,官方把使用这个函数也给注释了,不调用这个函数CAN收到数据时没法触发中断,后来把GD32官方的代码一点点移到工程里以后才能正常编译。
进入调试模式后,使用像牛一样慢的调试速度终于把问题找到了,就下边这句话:
for(uint32_t i = sIndex;i<len;i++)
改为 下边这样后正常
for(uint32_t i = sIndex;i<sIndex+len;i++)
|