所需E币: 0
时间: 2025-3-24 15:50
大小: 2.02KB
//------------------------------------------------------#ifndef __I#ifdef __cplusplus#define __I volatile //只读#else//程序空间在数据空间中可见(可使用const变量)#define __I volatileconst //只读#endif#endif#ifndef __O#define __O volatile //只写#endif#ifndef __IO#define __IO volatile //读写#endiftypedefunsignedchar uint8_t, INT8U, BYTE;typedef signedchar int8_t, INT8S;typedefunsignedint uint16_t,INT16U,HWORD;typedef signedint int16_t, INT16S;typedefunsignedlongint uint32_t,INT32U,WORD;typedef signedlongint int32_t, INT32S;typedefunsignedlonglongint uint64_t,INT64U,DWORD;typedef signedlonglongint int64_t, INT64S;#define UINT8_MAX (uint8_t)(255)#define INT8_MIN (int8_t)(-128)#define INT8_MAX (int8_t)( 127)#define UINT14_MAX (uint16_t)(16383)#define INT14_MAX (int16_t)(16383)#define UINT16_MAX (uint16_t)(65535)#define INT16_MIN (int16_t)(-32768)#define INT16_MAX (int16_t)(32767)#define UINT32_MAX (uint32_t)(4294967295)#define INT32_MIN (int32_t)(-2147483648)#define INT32_MAX (int32_t)(2147483647)#define UINT64_MAX (uint64_t)(18446744073709551615)#define INT64_MIN (int64_t)(-9223372036854775808)#define INT64_MAX (int64_t)(9223372036854775807)//------------------------------------------------//字节操作类型typedefunion{ __IOchar ch; //字符 __IOint8_t iByte; //有符号数 __IOuint8_tbyte; //字节 struct { __IOuint8_td0:4; __IOuint8_td1:4; }hByte; //半字节 struct { __IOuint8_td0:1; __IOuint8_td1:1; __IOuint8_td2:1; __IOuint8_td3:1; __IOuint8_td4:1; __IOuint8_td5:1; __IOuint8_td6:1; __IOuint8_td7:1; }bittel; //二进制位}Byte_t,*Byte_pt;//半字操作类型(存储模式:小端模式,低字节在低地址)typedefunion{ __IOint16_t iHWord; //有符号数 __IOuint16_thWord; //半字 struct { __IOuint8_td0; __IOuint8_td1; }byte; //字节 struct { __IOuint8_td0:4; __IOuint8_td1:4; __IOuint8_td2:4; __IOuint8_td3:4; }hByte; //半字节 struct { __IOuint8_td0:1; __IOuint8_td1:1; __IOuint8_td2:1; __IOuint8_td3:1; __IOuint8_td4:1; __IOuint8_td5:1; __IOuint8_td6:1; __IOuint8_td7:1; __IOuint8_td8:1; __IOuint8_td9:1; __IOuint8_td10:1; __IOuint8_td11:1; __IOuint8_td12:1; __IOuint8_td13:1; __IOuint8_td14:1; __IOuint8_td15:1; }bittel; //二进制位}HWord_t,*HWord_pt;//字操作类型(存储模式:小端模式)typedefunion{ __IOfloat fVal; //单精度浮点数 __IOint32_t iWord; //有符号数 __IOuint32_tword; //字 struct { __IOuint16_td0; __IOuint16_td1; }hWord; //半字 struct { __IOuint8_td0; __IOuint8_td1; __IOuint8_td2; __IOuint8_td3; }byte; //字节 struct { __IOuint8_td0:4; __IOuint8_td1:4; __IOuint8_td2:4; __IOuint8_td3:4; __IOuint8_td4:4; __IOuint8_td5:4; __IOuint8_td6:4; __IOuint8_td7:4; }hByte; //半字节 struct { __IOuint8_td0:1; __IOuint8_td1:1; __IOuint8_td2:1; __IOuint8_td3:1; __IOuint8_td4:1; __IOuint8_td5:1; __IOuint8_td6:1; __IOuint8_td7:1; __IOuint8_td8:1; __IOuint8_td9:1; __IOuint8_td10:1; __IOuint8_td11:1; __IOuint8_td12:1; __IOuint8_td13:1; __IOuint8_td14:1; __IOuint8_td15:1; __IOuint8_td16:1; __IOuint8_td17:1; __IOuint8_td18:1; __IOuint8_td19:1; __IOuint8_td20:1; __IOuint8_td21:1; __IOuint8_td22:1; __IOuint8_td23:1; __IOuint8_td24:1; __IOuint8_td25:1; __IOuint8_td26:1; __IOuint8_td27:1; __IOuint8_td28:1; __IOuint8_td29:1; __IOuint8_td30:1; __IOuint8_td31:1; }bittel; //二进制位}Word_t,*Word_pt;//双字操作类型(存储模式:小端模式)typedefunion{ __IOdouble dFVal; //双精度浮点数 __IOint64_t iDWord; //有符号数 __IOuint64_tdWord; //双字 struct { __IOuint32_td0; __IOuint32_td1; }word; //字 struct { __IOuint16_td0; __IOuint16_td1; __IOuint16_td2; __IOuint16_td3; }hWord; //半字 struct { __IOuint8_td0; __IOuint8_td1; __IOuint8_td2; __IOuint8_td3; __IOuint8_td4; __IOuint8_td5; __IOuint8_td6; __IOuint8_td7; }byte; //字节 struct { __IOuint8_td0:4; __IOuint8_td1:4; __IOuint8_td2:4; __IOuint8_td3:4; __IOuint8_td4:4; __IOuint8_td5:4; __IOuint8_td6:4; __IOuint8_td7:4; __IOuint8_td8:4; __IOuint8_td9:4; __IOuint8_td10:4; __IOuint8_td11:4; __IOuint8_td12:4; __IOuint8_td13:4; __IOuint8_td14:4; __IOuint8_td15:4; }hByte; //半字节 struct { __IOuint8_td0:1; __IOuint8_td1:1; __IOuint8_td2:1; __IOuint8_td3:1; __IOuint8_td4:1; __IOuint8_td5:1; __IOuint8_td6:1; __IOuint8_td7:1; __IOuint8_td8:1; __IOuint8_td9:1; __IOuint8_td10:1; __IOuint8_td11:1; __IOuint8_td12:1; __IOuint8_td13:1; __IOuint8_td14:1; __IOuint8_td15:1; __IOuint8_td16:1; __IOuint8_td17:1; __IOuint8_td18:1; __IOuint8_td19:1; __IOuint8_td20:1; __IOuint8_td21:1; __IOuint8_td22:1; __IOuint8_td23:1; __IOuint8_td24:1; __IOuint8_td25:1; __IOuint8_td26:1; __IOuint8_td27:1; __IOuint8_td28:1; __IOuint8_td29:1; __IOuint8_td30:1; __IOuint8_td31:1; __IOuint8_td32:1; __IOuint8_td33:1; __IOuint8_td34:1; __IOuint8_td35:1; __IOuint8_td36:1; __IOuint8_td37:1; __IOuint8_td38:1; __IOuint8_td39:1; __IOuint8_td40:1; __IOuint8_td41:1; __IOuint8_td42:1; __IOuint8_td43:1; __IOuint8_td44:1; __IOuint8_td45:1; __IOuint8_td46:1; __IOuint8_td47:1; __IOuint8_td48:1; __IOuint8_td49:1; __IOuint8_td50:1; __IOuint8_td51:1; __IOuint8_td52:1; __IOuint8_td53:1; __IOuint8_td54:1; __IOuint8_td55:1; __IOuint8_td56:1; __IOuint8_td57:1; __IOuint8_td58:1; __IOuint8_td59:1; __IOuint8_td60:1; __IOuint8_td61:1; __IOuint8_td62:1; __IOuint8_td63:1; }bittel; //二进制位}DWord_t,*DWord_pt;//------------------------------------------------------//时间计算typedefstructCalTime{ __IOuint16_tbDelay:1; //延时标识 __IOuint16_tbExe:1; //执行标识 __IOuint16_tbCon:1; //控制标识 __IOuint16_tcon:13; //控制值[0,8191] __IOuint16_tval; //计数值}CalTime_t,*CalTime_pt;//------------------------------------------------------//===单二进制位操作宏===//2字节长度#defineSetBit2B(Byte,Bit) ((Byte)|= (((uint16_t)1)<<(Bit)))#defineClrBit2B(Byte,Bit) ((Byte)&=~(((uint16_t)1)<<(Bit)))#defineComBit2B(Byte,Bit) ((Byte)^= (((uint16_t)1)<<(Bit)))#defineGetBit2B(Byte,Bit) (((Byte)& (((uint16_t)1)<<(Bit)))?1:0)//4字节长度#defineSetBit4B(Byte,Bit) ((Byte)|= (((uint32_t)1)<<(Bit)))#defineClrBit4B(Byte,Bit) ((Byte)&=~(((uint32_t)1)<<(Bit)))#defineComBit4B(Byte,Bit) ((Byte)^= (((uint32_t)1)<<(Bit)))#defineGetBit4B(Byte,Bit) (((Byte)& (((uint32_t)1)<<(Bit)))?1:0)//8字节长度#defineSetBit8B(Byte,Bit) ((Byte)|= (((uint64_t)1)<<(Bit)))#defineClrBit8B(Byte,Bit) ((Byte)&=~(((uint64_t)1)<<(Bit)))#defineComBit8B(Byte,Bit) ((Byte)^= (((uint64_t)1)<<(Bit)))#defineGetBit8B(Byte,Bit) (((Byte)& (((