电流反馈报文协议如上,目标从中提取出后四个字节。
cantest上查看到的报文如下:
the fourth byte : 0x80,二进制10000000,the seven bit is 1, 故电流为float type.
电流报文按小端字节序,关于小端字节序,可以看这篇:
小端,大端字节序
关于浮点数的存储与十六进制的转换可以看这:
浮点数与字节数据转换详解
看完至于验证可以用这个转换器来验证:
在线进制转换
最后的解决依赖这篇:C语言:十六进制(HEX)和浮点类型(float、double)转换
好了于是依赖于此,我写出了下面倒数第二行的code,结果单片机直接跑死,现象就是写的跑马灯死了,(在这也特别提醒下,跑马灯虽然简单但特别重要,因为它可以检验你的代码是否跑死了)。
问得跑死就是代码写的有问题,死循环hard default了,后来通过一个一个.c文件函数打断点,发现死循环在这了:
而通过entire project 查找发现调用这个函数得只有一处,
最后解决就是这
后来搜了下,发现了一篇讲的不错的文:
STM32硬件错误HardFault_Handler的处理方法
至于为什么数组越界,可能是:一维数组存储连续与否还要看编译器(听说的),第一次遇到这种情况,就记录下吧,我太菜了,浪费了挺多时间呜呜