最近在用DSP28335时,发现数据类型与ARM体系的数据类型有些差异,做了以下测试,来确定DSP28335上数据类型的大小。
28335单位中长度为是16bit.
- count = sizeof(char);
- count = sizeof(int);
- count = sizeof(double);
- count = (sizeof(long)
复制代码
通过查看寄存器发现:
- char : 1 (16bit)
- int : 1 (16bit)
- double: 2 (32bit)
- long: 2 (32bit)
- short: 1 (16bit)
- float: 2 (32bit)
- long long: 4 (64bit)
- ----------------------------------------------------------------------------------------------
- struct SDATA_BIT{
- unsigned int D1 : 16;
- unsigned int D2 : 16;
- unsigned int D3 : 4 ;
- unsigned int D4 : 1 ;
- unsigned int D5 : 1 ;
- unsigned int D6 : 1 ;
- unsigned int D7 : 1 ;
- };
- sizeof(struct SDATA_BIT sBIT) = 3; //
复制代码
由于DSP28335上的数据类型与ARM的不同,因此在做通信协议时,尤其是用到联合体、数组、结构体来存放数据时,要注意!!! |