我使用了F28069进行开发学习,进行了内部温度传感器的采集实验。
但是使用memory browser时候,遇到了如下问题。
在int16 GetTemperatureC(int16 sensorSample)函数中, getTempOffset()和getTempSlope()可以得到rom存储的数据。
如
// 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)()
//ADC code corresponding to temperature sensor output at 0 deg. C
#define getTempOffset() (*(int (*)(void))0x3D7E85)()
我观察了getTempOffset()和getTempSlope()两个数值,如下
int16 GetTemperatureC(int16 sensorSample)
{
slope = getTempSlope();
offset = getTempOffset();
return ((sensorSample – getTempOffset())*(int32)getTempSlope() + FP_ROUND + KELVIN_OFF)/FP_SCALE – KELVIN;
}
在expression看到slope为5568,即0x15c0;offset为0x680.
但是我使用memory browser观察0x3D7E82,
得到如下结果:
但是我使用memory browser观察0x3D7E85,
得到如下结果:
指定地址并不是正确的数据,后面一个却是对的。
请问是为什么呀?
jiliang zhang:
#define getTempSlope() (*(int (*)(void))0x3D7E82)()
0x3D7E82这很明显是一个函数的地址,所以你直接查看0x3D7E82位置的值肯定不对