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.

CC2530: 32位数据分成4个8位数据,4个8位数据揉和为32位数据遇到问题。BREAK_UINT32(),BUILD_UINT32()。

Part Number: CC2530

请问一下,CC2530的zstack 2.5a的处理32位数据分裂成4个8位数据,以及将4个8位数据合并成32位数据的函数是不是有点问题?【BREAK_UINT32(),BUILD_UINT32()】

每次我得到数据以后,用串口输出,得到的数据,低16位是正确的,但是高16位不对。

我的代码如下:

发送数据部分:
uint32 T22=macMcuOverflowCount();
uint8 buffer1[4];
buffer1[0] = BREAK_UINT32(T22,0);
buffer1[1] = BREAK_UINT32(T22,1);
buffer1[2] = BREAK_UINT32(T22,2);
buffer1[3] = BREAK_UINT32(T22,3);
if(AF_DataRequest..........)



接收数据部分:
uint32 T222=0
uint8 data3[10]={0};
uint8 byte0=0x00,byte1=0x00,byte2=0x00,byte3=0x00;
byte0=pkt->cmd.Data[0];
byte1=pkt->cmd.Data[1];
byte2=pkt->cmd.Data[2];
byte3=pkt->cmd.Data[3];
T222 = BUILD_UINT32(byte0,byte1,byte2,byte3);
_lota(T222,data3,10);
HalUARTWrite(0,data3,osal_strlen(data3));

函数位于zstack sampleapp例程,hal_defs.h文件里,具体定义如下:

#define BREAK_UINT32( var, ByteNum ) \
(uint8)((uint32)(((var) >>((ByteNum) * 8)) & 0x00FF))

#define BUILD_UINT32(Byte0, Byte1, Byte2, Byte3) \
((uint32)((uint32)((Byte0) & 0x00FF) \
+ ((uint32)((Byte1) & 0x00FF) << 8)\
+ ((uint32)((Byte2) & 0x00FF) << 16) \
+ ((uint32)((Byte3) & 0x00FF) << 24)))