最近在调试过程中,一直发现结构体中数据错位现象,但是仿真器查看,又都正确..无意中数了数缓存前面的变量,是奇数字节.改称偶数字节后,一切正常..
例如: 奇数字节
unsigned char Flag = 0;
unsigned char U0RxBuf[512+32];
//----------------------------------------
typedef struct
{
unsigned char Flag;
unsigned char NC_A;
unsigned short CRC;
unsigned short ADDR;
unsigned short Len ;
unsigned char Buf[512];
}StrRxDat;
//
StrRxDat *pStrRxDat=(StrRxDat*)&U0RxBuf[0];
// 这样,结构体中的数据 ,CRC,ADDR,Len 中的数据均不正确,有错位.
// -- 偶数字迹
unsigned char FlagA = 0;
unsigned char Flag = 0;
unsigned char U0RxBuf[512+32];
//
// 这样,结构体中的数据 ,CRC,ADDR,Len 中的数据均正确.
//
因为 430为16位的,编程过程中容易忽视这个现象..