1、大、小端模式
摩托罗拉为大端格式,modbus、网络数据、powerPC也是大端格式;
Intel系列单片机为小端格式,包括奔腾系列PC机,ARM、OMAP,低字节存在地位,高字节存在高位。
对于数据0x0055
内存地址 | 大端格式 | 小端格式 |
0x0010 | 0x00 | 0x55 |
0x0011 | 0x55 | 0x00 |
2、负数、补码
计算机(单片机)中负数以补码形式存在,负数的补码 = 其相反数取反+1
调试中如果负数以16进制显示,则其值=(显示值-1)取反
Uint16 – int16 不需要将被减数转换为int32,直接运算的结果就是正确的,结果需要转换为int16再赋值。
3、CRC校验
CRC定义在尾部,新增参数时,若新增参数后CRC对应的位置值为0,则CRC校验正确;
4、Fp32有效位数为7位造成的精度丢失
value32fp = ( (float)value/pCurReg->Scale630 ); /*void型转32位指针*/
Value 4275738240
pCurReg->Scale630 1000
value32fp的运行结果为4275738.0000
误差在整形赋值给浮点时产生;