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)))
YiKai Chen:
BREAK_UINT32應該沒問題,設置斷點調試看看是你程序哪裡出錯