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;
}
内联函数的优势在于减少频繁的调用可节省资源