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;
}