[经验] 关于MSP430字节对齐的问题

wuzhpo   2015-8-19 14:23 楼主
        最近在调试过程中,一直发现结构体中数据错位现象,但是仿真器查看,又都正确..无意中数了数缓存前面的变量,是奇数字节.改称偶数字节后,一切正常..

例如: 奇数字节
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位的,编程过程中容易忽视这个现象..




回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复