|
我定义个数组,用来存储不同类型的数
INT8U I2cData[32];
然后 *((INT16U*)I2cData)=1234; 1234的16进制是0x04d2;
这样,应该是 I2cData[0]=0xd2,I2cData[1]=0x04; 才对,
可是我再仿真时,发现数据都向前偏移了1个地址,比如
I2cData 的首地址为 0x20fb,
本来应该 在地址0x20fb,0x20fc 的值为0xd2,0x04,
可是实际中查看memory , 却变成 0x20fa,0x20fb 的值为0xd2,0x04,
也就是16位整数,和浮点数等需要多字节存储的, 实际存储地址不对,向前偏移了1个地址,
这是什么原因呢??
如果我想 在EEPROM里存储不同类型的数值,应该怎么做呢,比如 怎样把浮点数转换成16进制,逐个字节存储呢,
我以前在F149上用上边的方法(定义个通用数组,然后*((INT16U*)I2cData)= xxx 来存储不同类型数值)
就没问题,换成F5437,就出现上面的莫名其妙的奇怪问题...
|
|