#ifndef _DERIVATIVE__H #define _DERIVATIVE__H #include //输出口 #define V_12_Ctrl PTP_PTP6 #define O_STAT_DIS PTP_PTP5 #define O_STATUS PTJ_PTJ0 //输入口 #define Button_PHONE PTADL_PTADL7 #define Button_UP PTADH_PTADH0 #define Button_OK PTADH_PTADH1 #define Button_DOWN PTP_PTP1 #define Button_SIRI PTJ_PTJ1 #define Signal_HORN PTT_PTT7 #define Button_SEEK_Add PTADL_PTADL3 #define Button_MUTE PTADL_PTADL4 #define Button_V_Reduce PTADL_PTADL6 #define Button_SEEK_Reduce PTADL_PTADL5 #define Button_V_Add PTADL_PTADL2 /* //背景灯驱动 #define O_LED_PWM PWMDTY7 */ extern unsigned char FLAG_GO_TO_Sleep; extern unsigned char M_ASK_S_Sleep; extern unsigned char NO_DATA_Sleep;//超时睡眠 /********此处为PE_Types*************/ #define setRegBit(reg, bit) (reg |= reg##_##bit##_##MASK) #define clrRegBit(reg, bit) (reg &= ~reg##_##bit##_##MASK) #define getRegBit(reg, bit) (reg & reg##_##bit##_##MASK) #define setReg(reg, val) (reg = (word)(val)) #define getReg(reg) (reg) #define setRegBits(reg, mask) (reg |= (word)(mask)) #define getRegBits(reg, mask) (reg & (word)(mask)) #define clrRegBits(reg, mask) (reg &= (word)(~(mask))) #define setRegBitGroup(reg, bits, val) (reg = (word)((reg & ~reg##_##bits##_##MASK) | ((val) << reg##_##bits##_##BITNUM))) #define getRegBitGroup(reg, bits) ((reg & reg##_##bits##_##MASK) >> reg##_##bits##_##BITNUM) #define setRegMask(reg, maskAnd, maskOr) (reg = (word)((getReg(reg) & ~(maskAnd)) | (maskOr))) #define setRegBitVal(reg, bit, val) ((val) == 0 ? (reg &= ~reg##_##bit##_##MASK) : (reg |= reg##_##bit##_##MASK)) #define changeRegBits(reg, mask) (reg ^= (mask)) #define changeRegBit(reg, bit) (reg ^= reg##_##bit##_##MASK) /******************************************************************/ /* Uniform multiplatform peripheral access macros - 16 bit access */ /******************************************************************/ #define setReg16Bit(RegName, BitName) (RegName |= RegName##_##BitName##_##MASK) #define clrReg16Bit(RegName, BitName) (RegName &= ~(word)RegName##_##BitName##_##MASK) #define invertReg16Bit(RegName, BitName) (RegName ^= RegName##_##BitName##_##MASK) #define testReg16Bit(RegName, BitName) (RegName & RegName##_##BitName##_##MASK) /* Whole peripheral register access macros */ #define setReg16(RegName, val) (RegName = (word)(val)) #define getReg16(RegName) (RegName) /* Bits peripheral register access macros */ #define testReg16Bits(RegName, GetMask) (RegName & (GetMask)) #define clrReg16Bits(RegName, ClrMask) (RegName &= (word)(~(word)(ClrMask))) #define setReg16Bits(RegName, SetMask) (RegName |= (word)(SetMask)) #define invertReg16Bits(RegName, InvMask) (RegName ^= (word)(InvMask)) #define clrSetReg16Bits(RegName, ClrMask, SetMask) (RegName = (RegName & (~(word)(ClrMask))) | (word)(SetMask)) #define seqClrSetReg16Bits(RegName, BitsMask, BitsVal) ((RegName &= ~(~(word)(BitsVal) & (word)(BitsMask))),\ (RegName |= (word)(BitsVal) & (word)(BitsMask)) ) #define seqSetClrReg16Bits(RegName, BitsMask, BitsVal) ((RegName |= (word)(BitsVal) & (word)(BitsMask)),\ (RegName &= ~(~(word)(BitsVal) & (word)(BitsMask))) ) #define seqResetSetReg16Bits(RegName, BitsMask, BitsVal) ((RegName &= ~(word)(BitsMask)),\ (RegName |= (word)(BitsVal) & (word)(BitsMask)) ) #define clrReg16BitsByOne(RegName, ClrMask, BitsMask) (RegName &= (word)(ClrMask) & (word)(BitsMask)) /* Bit group peripheral register access macros */ #define testReg16BitGroup(RegName, GroupName) (RegName & RegName##_##GroupName##_##MASK) #define getReg16BitGroupVal(RegName, GroupName) ((RegName & RegName##_##GroupName##_##MASK) >> RegName##_##GroupName##_##BITNUM) #define setReg16BitGroupVal(RegName, GroupName, GroupVal) (RegName = (RegName & ~(word)RegName##_##GroupName##_##MASK) | (((word)(GroupVal)) << RegName##_##GroupName##_##BITNUM)) #define seqClrSetReg16BitGroupVal(RegName,GroupName,GroupVal) ((RegName &= ~(~(((word)(GroupVal)) << RegName##_##GroupName##_##BITNUM) & RegName##_##GroupName##_##MASK)),\ (RegName |= (((word)(GroupVal)) << RegName##_##GroupName##_##BITNUM) & RegName##_##GroupName##_##MASK) ) #define seqSetClrReg16BitGroupVal(RegName,GroupName,GroupVal) ((RegName |= (((word)(GroupVal)) << RegName##_##GroupName##_##BITNUM) & RegName##_##GroupName##_##MASK),\ (RegName &= ~(~(((word)(GroupVal)) << RegName##_##GroupName##_##BITNUM) & RegName##_##GroupName##_##MASK)) ) #define seqResetSetReg16BitGroupVal(RegName,GroupName,GroupVal) ((RegName &= ~(word)RegName##_##GroupName##_##MASK),\ (RegName |= (((word)(GroupVal)) << RegName##_##GroupName##_##BITNUM) & RegName##_##GroupName##_##MASK) ) /*****************************************************************/ /* Uniform multiplatform peripheral access macros - 8 bit access */ /*****************************************************************/ #define setReg8Bit(RegName, BitName) (RegName |= RegName##_##BitName##_##MASK) #define clrReg8Bit(RegName, BitName) (RegName &= (byte)~(byte)RegName##_##BitName##_##MASK) #define invertReg8Bit(RegName, BitName) (RegName ^= RegName##_##BitName##_##MASK) #define testReg8Bit(RegName, BitName) (RegName & RegName##_##BitName##_##MASK) /* Whole peripheral register access macros */ #define setReg8(RegName, val) (RegName = (byte)(val)) #define getReg8(RegName) (RegName) /* Bits peripheral register access macros */ #define testReg8Bits(RegName, GetMask) (RegName & (GetMask)) #define clrReg8Bits(RegName, ClrMask) (RegName &= (byte)(~(byte)(ClrMask))) #define setReg8Bits(RegName, SetMask) (RegName |= (byte)(SetMask)) #define invertReg8Bits(RegName, InvMask) (RegName ^= (byte)(InvMask)) #define clrSetReg8Bits(RegName, ClrMask, SetMask) (RegName = (RegName & ((byte)(~(byte)(ClrMask)))) | (byte)(SetMask)) #define seqClrSetReg8Bits(RegName, BitsMask, BitsVal) ((RegName &= (byte)~((byte)~((byte)(BitsVal)) & ((byte)(BitsMask)))),\ (RegName |= ((byte)(BitsVal)) & ((byte)(BitsMask))) ) #define seqSetClrReg8Bits(RegName, BitsMask, BitsVal) ((RegName |= (byte)(BitsVal) & (byte)(BitsMask)),\ (RegName &= (byte)~((byte)~((byte)(BitsVal)) & (byte)(BitsMask))) ) #define seqResetSetReg8Bits(RegName, BitsMask, BitsVal) ((RegName &= (byte)~((byte)(BitsMask))),\ (RegName |= (byte)(BitsVal) & (byte)(BitsMask)) ) #define clrReg8BitsByOne(RegName, ClrMask, BitsMask) (RegName &= (byte)(ClrMask) & (byte)(BitsMask)) /* Bit group peripheral register access macros */ #define testReg8BitGroup(RegName, GroupName) (RegName & RegName##_##GroupName##_##MASK) #define getReg8BitGroupVal(RegName, GroupName) ((RegName & RegName##_##GroupName##_##MASK) >> RegName##_##GroupName##_##BITNUM) #define setReg8BitGroupVal(RegName, GroupName, GroupVal) (RegName = (RegName & (byte)~(byte)RegName##_##GroupName##_##MASK) | (byte)(((byte)(GroupVal)) << RegName##_##GroupName##_##BITNUM)) #define seqClrSetReg8BitGroupVal(RegName,GroupName,GroupVal) ((RegName &= (byte)~((byte)~(byte)(((byte)(GroupVal)) << RegName##_##GroupName##_##BITNUM) & (byte)RegName##_##GroupName##_##MASK)),\ (RegName |= (byte)(((byte)(GroupVal)) << RegName##_##GroupName##_##BITNUM) & (byte)RegName##_##GroupName##_##MASK) ) #define seqSetClrReg8BitGroupVal(RegName,GroupName,GroupVal) ((RegName |= (byte)(((byte)(GroupVal)) << RegName##_##GroupName##_##BITNUM) & (byte)RegName##_##GroupName##_##MASK),\ (RegName &= (byte)~((byte)~(byte)(((byte)(GroupVal)) << RegName##_##GroupName##_##BITNUM) & (byte)RegName##_##GroupName##_##MASK)) ) #define seqResetSetReg8BitGroupVal(RegName,GroupName,GroupVal) ((RegName &= (byte)~(byte)RegName##_##GroupName##_##MASK),\ (RegName |= (byte)(((byte)(GroupVal)) << RegName##_##GroupName##_##BITNUM) & RegName##_##GroupName##_##MASK) ) /******此处为PE_Error的宏定义********/ #define ERR_OK 0U /* OK */ #define ERR_SPEED 1U /* This device does not work in the active speed mode. */ #define ERR_RANGE 2U /* Parameter out of range. */ #define ERR_VALUE 3U /* Parameter of incorrect value. */ #define ERR_OVERFLOW 4U /* Timer overflow. */ #define ERR_MATH 5U /* Overflow during evaluation. */ #define ERR_ENABLED 6U /* Device is enabled. */ #define ERR_DISABLED 7U /* Device is disabled. */ #define ERR_BUSY 8U /* Device is busy. */ #define ERR_NOTAVAIL 9U /* Requested value or method not available. */ #define ERR_RXEMPTY 10U /* No data in receiver. */ #define ERR_TXFULL 11U /* Transmitter is full. */ #define ERR_BUSOFF 12U /* Bus not available. */ #define ERR_OVERRUN 13U /* Overrun error is detected. */ #define ERR_FRAMING 14U /* Framing error is detected. */ #define ERR_PARITY 15U /* Parity error is detected. */ #define ERR_NOISE 16U /* Noise error is detected. */ #define ERR_IDLE 17U /* Idle error is detected. */ #define ERR_FAULT 18U /* Fault error is detected. */ #define ERR_BREAK 19U /* Break char is received during communication. */ #define ERR_CRC 20U /* CRC error is detected. */ #define ERR_ARBITR 21U /* A node losts arbitration. This error occurs if two nodes start transmission at the same time. */ #define ERR_PROTECT 22U /* Protection error is detected. */ #define ERR_UNDERFLOW 23U /* Underflow error is detected. */ #define ERR_UNDERRUN 24U /* Underrun error is detected. */ #define ERR_COMMON 25U /* Common error of a device. */ #define ERR_LINSYNC 26U /* LIN synchronization error is detected. */ #define ERR_FAILED 27U /* Requested functionality or process failed. */ #define ERR_QFULL 28U /* Queue is full. */ #endif