1.數據拆分宏定義
#define BYTE0(dwTemp) ( *( (char *)(&dwTemp) ) )
#define BYTE1(dwTemp) ( *( (char *)(&dwTemp) + 1) )
#define BYTE2(dwTemp) ( *( (char *)(&dwTemp) + 2) )
#define BYTE3(dwTemp) ( *( (char *)(&dwTemp) + 3) )
在通訊中經常需要把數據拆成字節的形式,有多種方法這裏是其中一種比較好用的方法。
大致的處理過程是 對變量 dwTemp 去地址,然後將其強制轉化成char類型的指針 最後再取出指針所指向的內容,這樣就完成了對數據的拆分工作。
能完成這種功能的還有種寫法就是利用結構體,準確說是聯合體示例如下:
typedef union
{
uint16_t u16_vale;
uint8_t bytes[2];
}u16_type_u;
int mian ()
{
u16_type_u u16;
u16.bytes[0] = 10;
u16.bytes[1] = 1;
printf ("%d \n",&u16.u16_value);
return 0;
}
以上均可以完成數據的拆分工作。
2.充當內聯函數使用
示例如下:
#define LED1(a) if (a) \
GPIO_SetBits(GPIOB,GPIO_Pin_0);\
else \
GPIO_ResetBits(GPIOB,GPIO_Pin_0)
關於內聯函數,有如下示例大致可說明含義
inline int max (int i ,int j, int k)
{
if (i<j)
i = j;
if (i<k)
i = k;
return i;
}