接我的上一个问题讨论。
传送门:
使用CCS memory browser的问题
我现在尝试使用内存指针直接读取内存地址,方式如下。
- // The folloing pointers to function calls are:
- //Slope of temperature sensor (deg. C / ADC code). Stored in fixed point Q15 format.
- // #define getTempSlope() (*(int (*)(void))0x3D7E82)()
- int *getTempSlope = (int*)0x3D7E83;
然后调用:
- int16 GetTemperatureC(int16 sensorSample)
- {
- slope = *getTempSlope;
- offset = getTempOffset();
- //return ((sensorSample - getTempOffset())*(int32)getTempSlope() + FP_ROUND + KELVIN_OFF)/FP_SCALE - KELVIN;
- return 1;
- }
请大家务必注意,
int *getTempSlope = (int*)0x3D7E83,这里地址已经修改。原地址是0x3D7E82。
经过验证,使用83是可以读取到正确的数值的,但是使用82是不行的。
因此,我觉得datasheet中描述出现了错误。
这里的地址确实应该是83.
但是原来ti的官方函数,使用了函数指针的方式,这里可能涉及到操作码的问题。
目前打算看一下函数指针的相关知识。
希望大家也帮忙看看,后续我也将跟帖说明。