_iq sEEPROM_ReadFloat (unsigned short adr)
{
unsigned char adrH,adrL,Dat[4];
_iq *rDat=(_iq *)Dat;
_iq re=_IQ(0.0);
……
……
……
re = (_iq)(*rDat);
return re;
}
以上代码是一个完整的函数。在红色部分代码赋值时出现问题。变量re得到的值既不是rDat指向的地址,也不是rDat指向地址里的值。(是另外一个恒定值)
望高手指点。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
_iq sEEPROM_Read_iq_Type (unsigned short adr)
{
unsigned char adrH,adrL,Dat[4];
// unsigned short OverTimer=EEPROM_RW_OverTimerValue;
_iq *rDat;
_iq re=_IQ(0.0);
rDat=(_iq *)Dat;
if(adr >= sEEPROM_Size) return 0x00;
adrL = adr & 0xFC;
adrH = ((unsigned char)(adr >> 5) & AdrMaskH) | CMD_Read;
while(WriteState & sEEPROM_ReadState())
{
// if(0 == OverTimer--)
// return 0;
}
sEEPROM_CS_L();
sEEPROM_TxRxByte(adrH);
sEEPROM_TxRxByte(adrL);
Dat[0] = sEEPROM_TxRxByte(EmptyData);
Dat[1] = sEEPROM_TxRxByte(EmptyData);
Dat[0] += (Dat[1]<<8);
Dat[1] = sEEPROM_TxRxByte(EmptyData);
Dat[2] = sEEPROM_TxRxByte(EmptyData);
Dat[1] += (Dat[2]<<8);
sEEPROM_CS_H();
re = rDat[0];
return re;
}