数据结构,我想从EEPROM中读取数据,我有三个结构。拷贝数据使用的memcpy
typedef struct
{
fract32 MechCoilPhiBase; // Mech Angle Table
fract32 MechCoilPhi3rd; // Mech Angle Table
fract32 PhiSaltwater; // Saltwater Table
UINT16 d;
UINT16 crc;
} ChannelData_T;
typedef struct
{
UINT32 reHarmonic;
UINT32 reFundamental;
UINT32 imgHarmonic;
UINT32 imgFundamental;
UINT16 crc;
} CoilBoard_T;
// mechanic angles and salt water angles of coil stored in coil-eeprom
typedef struct
{
ChannelData_T channel[NUM_CHANNELS];
CoilBoard_T coilboard;
// UINT32 gCoilSerialNumber;
// UINT32 gInversSerialNumber;
} Coil_Eeprom_Data_T;
我想读取数据,但大小不是2的幂,我试图填充数据,但结构不正确填写。
我用下面的代码来读取缓冲区中的数据,并与结构填充它。 例如,crc变量是0,并且它没有从缓冲区正确读取。
这里是我如何将数据复制到缓冲区
memcpy((void*) &CoilEepromData, (const void*) &EepromCoil.aRxData[0], sizeof(Coil_Eeprom_Data_T));
extern volatile Coil_Eeprom_Data_T CoilEepromData;
extern volatile Eeprom_Coil_T EepromCoil; // control struct for the coil-eeprom
typedef struct
{
UINT8 crcValueOut;
UINT8 crcValueIn;
UINT8 pageAddress;
UINT8 dataLength;
UINT8 bytesToTransmit;
UINT8 bytesWritten;
UINT8 bytesToReceive;
UINT8 bytesRead;
UINT8 errorCount;
bool bWriteSucceed:1;
bool bStartup:1;
bool bReadingStarted:1;
UINT8 aTxData[COIL_SPI_BUFFER_SIZE];
UINT8 aRxData[COIL_SPI_BUFFER_SIZE];
} Eeprom_Coil_T;
你并不需要转换,并从'无效*'(C语言)。 – Kninnug
感谢,但这并没有解决我的问题 – Andre
@Andre这就是为什么它是一个评论,而不是答案。 :) – unwind