/*
*********************************************************************************************************
*IDE  : Keil uVision4
*功能 ：重定义数据类型
*版本 ：V1.0(2018/1/8)	重定义基本数据类型
		V1.1(2018/5/25)	删减部分重复定义类型
*********************************************************************************************************
*/

#ifndef  _DEF_H_
#define  _DEF_H_		

#define UINT8   unsigned char         
#define UINT16  unsigned int          
#define UINT32  unsigned long 

#define u8   unsigned char         
#define u16  unsigned int          
#define u32  unsigned long
#define uint8_t  unsigned char         
#define uint16_t unsigned int          
#define uint32_t unsigned long  
	
typedef unsigned char  INT8U;                    /*8位 [0~255]                          	*/
typedef signed   char  INT8S;                    /*8位 [-1278~127]                          */
typedef unsigned int   INT16U;                   /*16位[0~65535]                          	*/
typedef signed   int   INT16S;                   /*16位[-32768~32767]                       */
typedef unsigned long  INT32U;                   /*32位[0~4294967295]                       */
typedef signed   long  INT32S;                   /*32位[-2147483648~2147483647]           	*/
typedef float          FP32;                     /*32位[士1.18E-38~士3.40E+38]              */
typedef double 		   FP64; 					 /*双精度浮点数(64位长度)					*/

enum{FALSE=0u,TURE=!FALSE};						 /*真假枚举*/
typedef enum 
{
	Rev_Null = 0,////未接收
	Rev_Succeed ////接收成功
}finish;



typedef enum{RESET=0u,ENABLE=!RESET}EnableStatus;/*使能状态[复位/使能]*/

typedef union									 /*16位共用体*/
{
	INT16U ival;
	INT8U  cval[2];
}UN16;

typedef union									 /*32位共用体*/
{
	INT32U lval;
	INT8U  cval[3];	
}UN32;


///<user define






/*
**位操作处理宏定义[最多处理16位数据]
*/
#define BIT_SET(reg,n) 		((reg) |= (1<<(n)))		//将reg的第n位数据置位
#define BIT_CLR(reg,n)		((reg) &=~(1<<(n)))		//将reg的第n位数据清除
#define BIT_GET(reg,n)		(((reg)>>(n))&1u)		//获取reg第n位的数据值
#define BIT_XOR(reg,n,val)	(BIT_GET(reg,n)^(val))	//将reg第n位的数据和val异或(判断位是否相同)
#define BIT_ALONE(reg,n)	((reg) = (1<<(n)))		//将reg赋值第n位的独热码

#endif
