TMS320F28335之外部中断和自定义中断
2019-07-13 11:07发布
生成海报
- 外部中断
外部中断和其他模块中断中断原理一样,也是先设置中断级,然后PIE级,最后CPU级,外部中断的中断寄存器在中断头文件中,中断触发设置在中断C文件中,外部中断作为一个单独的模块使用。28335支持8 个可屏蔽的外部中断(XINT1–XINT7, XNMI)。XNMI 可设置成INT13 或者CPU 的NMI 中断。每一个中断可设置成负边沿、正边沿或者正负边沿触发,并且设置启用或禁用(包括XNMI 在内)。XINT1, XINT2,和XNMI 还包含一个16 位自由运行的递增计数器,当检测到一个有效的中断边沿时,该计数器复位为0。这个计数器可被用于中断精确计时。与281x 器件不同,28335没有专用的外部中断引脚。XINT1,XINT2 和XINT 中断可设置成GPIO0-GPIO31 引脚的输入。XINT3–XINT7 中断可设置成GPIO32-GPIO63 引脚的输入。外部中断控制寄存器的位定义如下图所示。
由上可知,配置外部中断的步骤为:
1、配置GPIO为外部中断引脚。
2、设置外部中断触发条件。
3、开启PIE中断。
4、设置中断向量表。
5、开启CPU中断。
6、编写中断函数,清除PIE中断标志位。
- 外部中断头文件DSP2833x_XIntrupt.h程序如下
#ifndef DSP2833x_XINTRUPT_H
#define DSP2833x_XINTRUPT_H
#ifdef __cplusplus
extern "C" {
#endif
struct XINTCR_BITS {
Uint16 ENABLE:1;
Uint16 rsvd1:1;
Uint16 POLARITY:2;
Uint16 rsvd2:12;
};
union XINTCR_REG {
Uint16 all;
struct XINTCR_BITS bit;
};
struct XNMICR_BITS {
Uint16 ENABLE:1;
Uint16 SELECT:1;
Uint16 POLARITY:2;
Uint16 rsvd2:12;
};
union XNMICR_REG {
Uint16 all;
struct XNMICR_BITS bit;
};
struct XINTRUPT_REGS {
union XINTCR_REG XINT1CR;
union XINTCR_REG XINT2CR;
union XINTCR_REG XINT3CR;
union XINTCR_REG XINT4CR;
union XINTCR_REG XINT5CR;
union XINTCR_REG XINT6CR;
union XINTCR_REG XINT7CR;
union XNMICR_REG XNMICR;
Uint16 XINT1CTR;
Uint16 XINT2CTR;
Uint16 rsvd[5];
Uint16 XNMICTR;
};
extern volatile struct XINTRUPT_REGS XIntruptRegs;
#ifdef __cplusplus
}
#endif /* extern "C" */
#endif
- 外部中断设置文件DSP2833x_XIntrupt.c如下
//---------------------------------------------------------------------------
// DSP2833x_XIntrupt.C 外部中断1初始化
//---------------------------------------------------------------------------
/***************************************************************************/
//包含头文件
//***************************************************************************/
//初始外部中断
//这个函数外部中断初始化到一个已知状态
void InitXIntrupt(void)
{
XIntruptRegs.XINT1CR.bit.POLARITY = 0; //中断1产生在下降沿
XIntruptRegs.XINT1CR.bit.ENABLE = 0x1; //使能外部中断1
}
//===========================================================================
// No more.
//===========================================================================
- 自定义中断文件
28335除了使用默认的中断配置外还可以使用自定义的中断配置文件,其中DSP2833x_DefaultIsr.h、DSP2833x_DefaultIsr.c和DSP2833x_PieVect.c这三个文件是默认中断配置文件,而DSP2833x_SWPrioritizedIsrLevels.h、DSP2833x_SWPrioritizedDefaultIsr.c、DSP2833x_SWPrioritizedPieVect.c这三个文件是TI提供给软件设计者对中断的配置重新定义的,第一个是中断优先级,第二个是中断程序,第三个是中断向量表。两种配置的功能都是相同的,自定义不过是可以改变优先级。
- 默认中断优先级文件DSP2833x_SWPrioritizedIsrLevels.h程序如下,修改寄存器优先级即可自定义中断
#ifndef DSP2833x_SW_PRIORITZIED_ISR_H
#define DSP2833x_SW_PRIORITZIED_ISR_H
#ifdef __cplusplus
extern "C" {
#endif
#define INT1PL 2 // Group1 Interrupts (PIEIER1)
#define INT2PL 1 // Group2 Interrupts (PIEIER2)
#define INT3PL 4 // Group3 Interrupts (PIEIER3)
#define INT4PL 2 // Group4 Interrupts (PIEIER4)
#define INT5PL 2 // Group5 Interrupts (PIEIER5)
#define INT6PL 3 // Group6 Interrupts (PIEIER6)
#define INT7PL 0 // reserved
#define INT8PL 0 // reserved
#define INT9PL 3 // Group9 Interrupts (PIEIER9)
#define INT10PL 0 // reserved
#define INT11PL 0 // reserved
#define INT12PL 0 // reserved
#define INT13PL 4 // XINT13
#define INT14PL 4 // INT14 (TINT2)
#define INT15PL 4 // DATALOG
#define INT16PL 4 // RTOSINT
#define G11PL 7 // SEQ1INT (ADC)
#define G12PL 6 // SEQ2INT (ADC)
#define G13PL 0 // reserved
#define G14PL 1 // XINT1 (External)
#define G15PL 3 // XINT2 (External)
#define G16PL 2 // ADCINT (ADC)
#define G17PL 1 // TINT0 (CPU Timer 0)
#define G18PL 5 // WAKEINT (WD/LPM)
#define G21PL 4 // EPWM1_TZINT (ePWM1 Trip)
#define G22PL 3 // EPWM2_TZINT (ePWM2 Trip)
#define G23PL 2 // EPWM3_TZINT (ePWM3 Trip)
#define G24PL 1 // EPWM4_TZINT (ePWM4 Trip)
#define G25PL 5 // EPWM5_TZINT (ePWM5 Trip)
#define G26PL 6 // EPWM6_TZINT (ePWM6 Trip)
#define G27PL 0 // reserved
#define G28PL 0 // reserved
#define G31PL 4 // EPWM1_INT (ePWM1 Int)
#define G32PL 1 // EPWM2_INT (ePWM2 Int)
#define G33PL 1 // EPWM3_INT (ePWM3 Int)
#define G34PL 2 // EPWM4_INT (ePWM4 Int)
#define G35PL 2 // EPWM5_INT (ePWM5 Int)
#define G36PL 1 // EPWM6_INT (ePWM6 Int)
#define G37PL 0 // reserved
#define G38PL 0 // reserved
#define G41PL 2 // ECAP1_INT (eCAP1 Int)
#define G42PL 1 // ECAP2_INT (eCAP2 Int)
#define G43PL 3 // ECAP3_INT (eCAP3 Int)
#define G44PL 3 // ECAP4_INT (eCAP4 Int)
#define G45PL 5 // ECAP5_INT (eCAP5 Int)
#define G46PL 5 // ECAP6_INT (eCAP6 Int)
#define G47PL 0 // reserved
#define G48PL 0 // reserved
#define G51PL 2 // EQEP1_INT (eQEP1 Int)
#define G52PL 1 // EQEP2_INT (eQEP2 Int)
#define G53PL 0 // reserved
#define G54PL 0 // reserved
#define G55PL 0 // reserved
#define G56PL 0 // reserved
#define G57PL 0 // reserved
#define G58PL 0 // reserved
#define G61PL 3 // SPIRXINTA (SPI-A)
#define G62PL 1 // SPITXINTA (SPI-A)
#define G63PL 4 // MRINTB (McBSP-B)
#define G64PL 6 // MXINTB (McBSP-B)
#define G65PL 2 // MRINTA (McBSP-A)
#define G66PL 1 // MXINTA (McBSP-A)
#define G67PL 0 // reserved
#define G68PL 0 // reserved
#define G71PL 5 // DINTCH1 (DMA)
#define G72PL 4 // DINTCH2 (DMA)
#define G73PL 4 // DINTCH3 (DMA)
#define G74PL 2 // DINTCH4 (DMA)
#define G75PL 3 // DINTCH5 (DMA)
#define G76PL 1 // DINTCH6 (DMA)
#define G77PL 0 // reserved
#define G78PL 0 // reserved
#define G81PL 1 // I2CINT1A (I2C-A)
#define G82PL 2 // I2CINT2A (I2C-A)
#define G83PL 0 // reserved
#define G84PL 0 // reserved
#define G85PL 4 // SCIRXINTC (SCI-C)
#define G86PL 3 // SCITXINTC (SCI-C)
#define G87PL 0 // reserved
#define G88PL 0 // reserved
#define G91PL 1 // SCIRXINTA (SCI-A) 优先级最高
#define G92PL 5 // SCITXINTA (SCI-A)
#define G93PL 3 // SCIRXINTB (SCI-B)
#define G94PL 4 // SCITXINTB (SCI-B)
#define G95PL 1 // ECAN0INTA (ECAN-A)
#define G96PL 1 // ECAN1INTA (ECAN-A)
#define G97PL 2 // ECAN0INTB (ECAN-B)
#define G98PL 4 // ECAN1INTB (ECAN-B)
#define G101PL 0 // reserved
#define G102PL 0 // reserved
#define G103PL 0 // reserved
#define G104PL 0 // reserved
#define G105PL 0 // reserved
#define G106PL 0 // reserved
#define G107PL 0 // reserved
#define G108PL 0 // reserved
#define G111PL 0 // reserved
#define G112PL 0 // reserved
#define G113PL 0 // reserved
#define G114PL 0 // reserved
#define G115PL 0 // reserved
#define G116PL 0 // reserved
#define G117PL 0 // reserved
#define G118PL 0 // reserved
#define G121PL 5 // XINT3 (External)
#define G122PL 3 // XINT4 (External)
#define G123PL 2 // XINT5 (External)
#define G124PL 2 // XINT6 (External)
#define G125PL 1 // XINT7 (External)
#define G126PL 0 // reserved
#define G127PL 6 // LVF (FPA32)
#define G128PL 1 // LUF (FPA32)
#if (INT1PL == 0)
#define MINT1_1PL ~(1 << 0)
#else
#define MINT1_1PL 0xFFFF
#endif
#if (INT2PL >= INT1PL) || (INT2PL == 0)
#define MINT1_2PL ~(1 << 1)
#else
#define MINT1_2PL 0xFFFF
#endif
#if (INT3PL >= INT1PL) || (INT3PL == 0)
#define MINT1_3PL ~(1 << 2)
#else
#define MINT1_3PL 0xFFFF
#endif
#if (INT4PL >= INT1PL) || (INT4PL == 0)
#define MINT1_4PL ~(1 << 3)
#else
#define MINT1_4PL 0xFFFF
#endif
#if (INT5PL >= INT1PL) || (INT5PL == 0)
#define MINT1_5PL ~(1 << 4)
#else
#define MINT1_5PL 0xFFFF
#endif
#if (INT6PL >= INT1PL) || (INT6PL == 0)
#define MINT1_6PL ~(1 << 5)
#else
#define MINT1_6PL 0xFFFF
#endif
#if (INT7PL >= INT1PL) || (INT7PL == 0)
#define MINT1_7PL ~(1 << 6)
#else
#define MINT1_7PL 0xFFFF
#endif
#if (INT8PL >= INT1PL) || (INT8PL == 0)
#define MINT1_8PL ~(1 << 7)
#else
#define MINT1_8PL 0xFFFF
#endif
#if (INT9PL >= INT1PL) || (INT9PL == 0)
#define MINT1_9PL ~(1 << 8)
#else
#define MINT1_9PL 0xFFFF
#endif
#if (INT10PL >= INT1PL) || (INT10PL == 0)
#define MINT1_10PL ~(1 << 9)
#else
#define MINT1_10PL 0xFFFF
#endif
#if (INT11PL >= INT1PL) || (INT11PL == 0)
#define MINT1_11PL ~(1 << 10)
#else
#define MINT1_11PL 0xFFFF
#endif
#if (INT12PL >= INT1PL) || (INT12PL == 0)
#define MINT1_12PL ~(1 << 11)
#else
#define MINT1_12PL 0xFFFF
#endif
#if (INT13PL >= INT1PL) || (INT13PL == 0)
#define MINT1_13PL ~(1 << 12)
#else
#define MINT1_13PL 0xFFFF
#endif
#if (INT14PL >= INT1PL) || (INT14PL == 0)
#define MINT1_14PL ~(1 << 13)
#else
#define MINT1_14PL 0xFFFF
#endif
#if (INT15PL >= INT1PL) || (INT15PL == 0)
#define MINT1_15PL ~(1 << 14)
#else
#define MINT1_15PL 0xFFFF
#endif
#if (INT16PL >= INT1PL) || (INT16PL == 0)
#define MINT1_16PL ~(1 << 15)
#else
#define MINT1_16PL 0xFFFF
#endif
#define MINT1 (MINT1_1PL & MINT1_2PL & MINT1_3PL & MINT1_4PL &
MINT1_5PL & MINT1_6PL & MINT1_7PL & MINT1_8PL &
MINT1_9PL & MINT1_10PL & MINT1_11PL & MINT1_12PL &
MINT1_13PL & MINT1_14PL & MINT1_15PL & MINT1_16PL)
#if (INT1PL >= INT2PL) || (INT1PL == 0)
#define MINT2_1PL ~(1 << 0)
#else
#define MINT2_1PL 0xFFFF
#endif
#if (INT2PL == 0)
#define MINT2_2PL ~(1 << 1)
#else
#define MINT2_2PL 0xFFFF
#endif
#if (INT3PL >= INT2PL) || (INT3PL == 0)
#define MINT2_3PL ~(1 << 2)
#else
#define MINT2_3PL 0xFFFF
#endif
#if (INT4PL >= INT2PL) || (INT4PL == 0)
#define MINT2_4PL ~(1 << 3)
#else
#define MINT2_4PL 0xFFFF
#endif
#if (INT5PL >= INT2PL) || (INT5PL == 0)
#define MINT2_5PL ~(1 << 4)
#else
#define MINT2_5PL 0xFFFF
#endif
#if (INT6PL >= INT2PL) || (INT6PL == 0)
#define MINT2_6PL ~(1 << 5)
#else
#define MINT2_6PL 0xFFFF
#endif
#if (INT7PL >= INT2PL) || (INT7PL == 0)
#define MINT2_7PL ~(1 << 6)
#else
#define MINT2_7PL 0xFFFF
#endif
#if (INT8PL >= INT2PL) || (INT8PL == 0)
#define MINT2_8PL ~(1 << 7)
#else
#define MINT2_8PL 0xFFFF
#endif
#if (INT9PL >= INT2PL) || (INT9PL == 0)
#define MINT2_9PL ~(1 << 8)
#else
#define MINT2_9PL 0xFFFF
#endif
#if (INT10PL >= INT2PL) || (INT10PL == 0)
#define MINT2_10PL ~(1 << 9)
#else
#define MINT2_10PL 0xFFFF
#endif
#if (INT11PL >= INT2PL) || (INT11PL == 0)
#define MINT2_11PL ~(1 << 10)
#else
#define MINT2_11PL 0xFFFF
#endif
#if (INT12PL >= INT2PL) || (INT12PL == 0)
#define MINT2_12PL ~(1 << 11)
#else
#define MINT2_12PL 0xFFFF
#endif
#if (INT13PL >= INT2PL) || (INT13PL == 0)
#define MINT2_13PL ~(1 << 12)
#else
#define MINT2_13PL 0xFFFF
#endif
#if (INT14PL >= INT2PL) || (INT14PL == 0)
#define MINT2_14PL ~(1 << 13)
#else
#define MINT2_14PL 0xFFFF
#endif
#if (INT15PL >= INT2PL) || (INT15PL == 0)
#define MINT2_15PL ~(1 << 14)
#else
#define MINT2_15PL 0xFFFF
#endif
#if (INT16PL >= INT2PL) || (INT16PL == 0)
#define MINT2_16PL ~(1 << 15)
#else
#define MINT2_16PL 0xFFFF
#endif
#define MINT2 (MINT2_1PL & MINT2_2PL & MINT2_3PL & MINT2_4PL &
MINT2_5PL & MINT2_6PL & MINT2_7PL & MINT2_8PL &
MINT2_9PL & MINT2_10PL & MINT2_11PL & MINT2_12PL &
MINT2_13PL & MINT2_14PL & MINT2_15PL & MINT2_16PL)
#if (INT1PL >= INT3PL) || (INT1PL == 0)
#define MINT3_1PL ~(1 << 0)
#else
#define MINT3_1PL 0xFFFF
#endif
#if (INT2PL >= INT3PL) || (INT2PL == 0)
#define MINT3_2PL ~(1 << 1)
#else
#define MINT3_2PL 0xFFFF
#endif
#if (INT3PL == 0)
#define MINT3_3PL ~(1 << 2)
#else
#define MINT3_3PL 0xFFFF
#endif
#if (INT4PL >= INT3PL) || (INT4PL == 0)
#define MINT3_4PL ~(1 << 3)
#else
#define MINT3_4PL 0xFFFF
#endif
#if (INT5PL >= INT3PL) || (INT5PL == 0)
#define MINT3_5PL ~(1 << 4)
#else
#define MINT3_5PL 0xFFFF
#endif
#if (INT6PL >= INT3PL) || (INT6PL == 0)
#define MINT3_6PL ~(1 << 5)
#else
#define MINT3_6PL 0xFFFF
#endif
#if (INT7PL >= INT3PL) || (INT7PL == 0)
#define MINT3_7PL ~(1 << 6)
#else
#define MINT3_7PL 0xFFFF
#endif
#if (INT8PL >= INT3PL) || (INT8PL == 0)
#define MINT3_8PL ~(1 << 7)
#else
#define MINT3_8PL 0xFFFF
#endif
#if (INT9PL >= INT3PL) || (INT9PL == 0)
#define MINT3_9PL ~(1 << 8)
#else
#define MINT3_9PL 0xFFFF
#endif
#if (INT10PL >= INT3PL) || (INT10PL == 0)
#define MINT3_10PL ~(1 << 9)
#else
#define MINT3_10PL 0xFFFF
#endif
#if (INT11PL >= INT3PL) || (INT11PL == 0)
#define MINT3_11PL ~(1 << 10)
#else
#define MINT3_11PL 0xFFFF
#endif
#if (INT12PL >= INT3PL) || (INT12PL == 0)
#define MINT3_12PL ~(1 << 11)
#else
#define MINT3_12PL 0xFFFF
#endif
#if (INT13PL >= INT3PL) || (INT13PL == 0)
#define MINT3_13PL ~(1 << 12)
#else
#define MINT3_13PL 0xFFFF
#endif
#if (INT14PL >= INT3PL) || (INT14PL == 0)
#define MINT3_14PL ~(1 << 13)
#else
#define MINT3_14PL 0xFFFF
#endif
#if (INT15PL >= INT3PL) || (INT15PL == 0)
#define MINT3_15PL ~(1 << 14)
#else
#define MINT3_15PL 0xFFFF
#endif
#if (INT16PL >= INT3PL) || (INT16PL == 0)
#define MINT3_16PL ~(1 << 15)
#else
#define MINT3_16PL 0xFFFF
#endif
#define MINT3 (MINT3_1PL & MINT3_2PL & MINT3_3PL & MINT3_4PL &
MINT3_5PL & MINT3_6PL & MINT3_7PL & MINT3_8PL &
MINT3_9PL & MINT3_10PL & MINT3_11PL & MINT3_12PL &
MINT3_13PL & MINT3_14PL & MINT3_15PL & MINT3_16PL)
#if (INT1PL >= INT4PL) || (INT1PL == 0)
#define MINT4_1PL ~(1 << 0)
#else
#define MINT4_1PL 0xFFFF
#endif
#if (INT2PL >= INT4PL) || (INT2PL == 0)
#define MINT4_2PL ~(1 << 1)
#else
#define MINT4_2PL 0xFFFF
#endif
#if (INT3PL >= INT4PL) || (INT3PL == 0)
#define MINT4_3PL ~(1 << 2)
#else
#define MINT4_3PL 0xFFFF
#endif
#if (INT4PL == 0)
#define MINT4_4PL ~(1 << 3)
#else
#define MINT4_4PL 0xFFFF
#endif
#if (INT5PL >= INT4PL) || (INT5PL == 0)
#define MINT4_5PL ~(1 << 4)
#else
#define MINT4_5PL 0xFFFF
#endif
#if (INT6PL >= INT4PL) || (INT6PL == 0)
#define MINT4_6PL ~(1 << 5)
#else
#define MINT4_6PL 0xFFFF
#endif
#if (INT7PL >= INT4PL) || (INT7PL == 0)
#define MINT4_7PL ~(1 << 6)
#else
#define MINT4_7PL 0xFFFF
#endif
#if (INT8PL >= INT4PL) || (INT8PL == 0)
#define MINT4_8PL ~(1 << 7)
#else
#define MINT4_8PL 0xFFFF
#endif
#if (INT9PL >= INT4PL) || (INT9PL == 0)
#define MINT4_9PL ~(1 << 8)
#else
#define MINT4_9PL 0xFFFF
#endif
#if (INT10PL >= INT4PL) || (INT10PL == 0)
#define MINT4_10PL ~(1 << 9)
#else
#define MINT4_10PL 0xFFFF
#endif
#if (INT11PL >= INT4PL) || (INT11PL == 0)
#define MINT4_11PL ~(1 << 10)
#else
#define MINT4_11PL 0xFFFF
#endif
#if (INT12PL >= INT4PL) || (INT12PL == 0)
#define MINT4_12PL ~(1 << 11)
#else
#define MINT4_12PL 0xFFFF
#endif
#if (INT13PL >= INT4PL) || (INT13PL == 0)
#define MINT4_13PL ~(1 << 12)
#else
#define MINT4_13PL 0xFFFF
#endif
#if (INT14PL >= INT4PL) || (INT14PL == 0)
#define MINT4_14PL ~(1 << 13)
#else
#define MINT4_14PL 0xFFFF
#endif
#if (INT15PL >= INT4PL) || (INT15PL == 0)
#define MINT4_15PL ~(1 << 14)
#else
#define MINT4_15PL 0xFFFF
#endif
#if (INT16PL >= INT4PL) || (INT16PL == 0)
#define MINT4_16PL ~(1 << 15)
#else
#define MINT4_16PL 0xFFFF
#endif
#define MINT4 (MINT4_1PL & MINT4_2PL & MINT4_3PL & MINT4_4PL &
MINT4_5PL & MINT4_6PL & MINT4_7PL & MINT4_8PL &
MINT4_9PL & MINT4_10PL & MINT4_11PL & MINT4_12PL &
MINT4_13PL & MINT4_14PL & MINT4_15PL & MINT4_16PL)
#if (INT1PL >= INT5PL) || (INT1PL == 0)
#define MINT5_1PL ~(1 << 0)
#else
#define MINT5_1PL 0xFFFF
#endif
#if (INT2PL >= INT5PL) || (INT2PL == 0)
#define MINT5_2PL ~(1 << 1)
#else
#define MINT5_2PL 0xFFFF
#endif
#if (INT3PL >= INT5PL) || (INT3PL == 0)
#define MINT5_3PL ~(1 << 2)
#else
#define MINT5_3PL 0xFFFF
#endif
#if (INT4PL >= INT5PL) || (INT4PL == 0)
#define MINT5_4PL ~(1 << 3)
#else
#define MINT5_4PL 0xFFFF
#endif
#if (INT5PL == 0)
#define MINT5_5PL ~(1 << 4)
#else
#define MINT5_5PL 0xFFFF
#endif
#if (INT6PL >= INT5PL) || (INT6PL == 0)
#define MINT5_6PL ~(1 << 5)
#else
#define MINT5_6PL 0xFFFF
#endif
#if (INT7PL >= INT5PL) || (INT7PL == 0)
#define MINT5_7PL ~(1 << 6)
#else
#define MINT5_7PL 0xFFFF
#endif
#if (INT8PL >= INT5PL) || (INT8PL == 0)
#define MINT5_8PL ~(1 << 7)
#else
#define MINT5_8PL 0xFFFF
#endif
#if (INT9PL >= INT5PL) || (INT9PL == 0)
#define MINT5_9PL ~(1 << 8)
#else
#define MINT5_9PL 0xFFFF
#endif
#if (INT10PL >= INT5PL) || (INT10PL == 0)
#define MINT5_10PL ~(1 << 9)
#else
#define MINT5_10PL 0xFFFF
#endif
#if (INT11PL >= INT5PL) || (INT11PL == 0)
#define MINT5_11PL ~(1 << 10)
#else
#define MINT5_11PL 0xFFFF
#endif
#if (INT12PL >= INT5PL) || (INT12PL == 0)
#define MINT5_12PL ~(1 << 11)
#else
#define MINT5_12PL 0xFFFF
#endif
#if (INT13PL >= INT5PL) || (INT13PL == 0)
#define MINT5_13PL ~(1 << 12)
#else
#define MINT5_13PL 0xFFFF
#endif
#if (INT14PL >= INT5PL) || (INT14PL == 0)
#define MINT5_14PL ~(1 << 13)
#else
#define MINT5_14PL 0xFFFF
#endif
#if (INT15PL >= INT5PL) || (INT15PL == 0)
#define MINT5_15PL ~(1 << 14)
#else
#define MINT5_15PL 0xFFFF
#endif
#if (INT16PL >= INT5PL) || (INT16PL == 0)
#define MINT5_16PL ~(1 << 15)
#else
#define MINT5_16PL 0xFFFF
#endif
#define MINT5 (MINT5_1PL & MINT5_2PL & MINT5_3PL & MINT5_4PL &
MINT5_5PL & MINT5_6PL & MINT5_7PL & MINT5_8PL &
MINT5_9PL & MINT5_10PL & MINT5_11PL & MINT5_12PL &
MINT5_13PL & MINT5_14PL & MINT5_15PL & MINT5_16PL)
#if (INT1PL >= INT6PL) || (INT1PL == 0)
#define MINT6_1PL ~(1 << 0)
#else
#define MINT6_1PL 0xFFFF
#endif
#if (INT2PL >= INT6PL) || (INT2PL == 0)
#define MINT6_2PL ~(1 << 1)
#else
#define MINT6_2PL 0xFFFF
#endif
#if (INT3PL >= INT6PL) || (INT3PL == 0)
#define MINT6_3PL ~(1 << 2)
#else
#define MINT6_3PL 0xFFFF
#endif
#if (INT4PL >= INT6PL) || (INT4PL == 0)
#define MINT6_4PL ~(1 << 3)
#else
#define MINT6_4PL 0xFFFF
#endif
#if (INT5PL >= INT6PL) || (INT5PL == 0)
#define MINT6_5PL ~(1 << 4)
#else
#define MINT6_5PL 0xFFFF
#endif
#if (INT6PL == 0)
#define MINT6_6PL ~(1 << 5)
#else
#define MINT6_6PL 0xFFFF
#endif
#if (INT7PL >= INT6PL) || (INT7PL == 0)
#define MINT6_7PL ~(1 << 6)
#else
#define MINT6_7PL 0xFFFF
#endif
#if (INT8PL >= INT6PL) || (INT8PL == 0)
#define MINT6_8PL ~(1 << 7)
#else
#define MINT6_8PL 0xFFFF
#endif
#if (INT9PL >= INT6PL) || (INT9PL == 0)
#define MINT6_9PL ~(1 << 8)
#else
#define MINT6_9PL 0xFFFF
#endif
#if (INT10PL >= INT6PL) || (INT10PL == 0)
#define MINT6_10PL ~(1 << 9)
#else
#define MINT6_10PL 0xFFFF
#endif
#if (INT11PL >= INT6PL) || (INT11PL == 0)
#define MINT6_11PL ~(1 << 10)
#else
#define MINT6_11PL 0xFFFF
#endif
#if (INT12PL >= INT6PL) || (INT12PL == 0)
#define MINT6_12PL ~(1 << 11)
#else
#define MINT6_12PL 0xFFFF
#endif
#if (INT13PL >= INT6PL) || (INT13PL == 0)
#define MINT6_13PL ~(1 << 12)
#else
#define MINT6_13PL 0xFFFF
#endif
#if (INT14PL >= INT6PL) || (INT14PL == 0)
#define MINT6_14PL ~(1 << 13)
#else
#define MINT6_14PL 0xFFFF
#endif
#if (INT15PL >= INT6PL) || (INT15PL == 0)
#define MINT6_15PL ~(1 << 14)
#else
#define MINT6_15PL 0xFFFF
#endif
#if (INT16PL >= INT6PL) || (INT16PL == 0)
#define MINT6_16PL ~(1 << 15)
#else
#define MINT6_16PL 0xFFFF
#endif
#define MINT6 (MINT6_1PL & MINT6_2PL & MINT6_3PL & MINT6_4PL &
MINT6_5PL & MINT6_6PL & MINT6_7PL & MINT6_8PL &
MINT6_9PL & MINT6_10PL & MINT6_11PL & MINT6_12PL &
MINT6_13PL & MINT6_14PL & MINT6_15PL & MINT6_16PL)
#if (INT1PL >= INT7PL) || (INT1PL == 0)
#define MINT7_1PL ~(1 << 0)
#else
#define MINT7_1PL 0xFFFF
#endif
#if (INT2PL >= INT7PL) || (INT2PL == 0)
#define MINT7_2PL ~(1 << 1)
#else
#define MINT7_2PL 0xFFFF
#endif
#if (INT3PL >= INT7PL) || (INT3PL == 0)
#define MINT7_3PL ~(1 << 2)
#else
#define MINT7_3PL 0xFFFF
#endif
#if (INT4PL >= INT7PL) || (INT4PL == 0)
#define MINT7_4PL ~(1 << 3)
#else
#define MINT7_4PL 0xFFFF
#endif
#if (INT5PL >= INT7PL) || (INT5PL == 0)
#define MINT7_5PL ~(1 << 4)
#else
#define MINT7_5PL 0xFFFF
#endif
#if (INT6PL >= INT7PL) || (INT6PL == 0)
#define MINT7_6PL ~(1 << 5)
#else
#define MINT7_6PL 0xFFFF
#endif
#if (INT7PL == 0)
#define MINT7_7PL ~(1 << 6)
#else
#define MINT7_7PL 0xFFFF
#endif
#if (INT8PL >= INT7PL) || (INT8PL == 0)
#define MINT7_8PL ~(1 << 7)
#else
#define MINT7_8PL 0xFFFF
#endif
#if (INT9PL >= INT7PL) || (INT9PL == 0)
#define MINT7_9PL ~(1 << 8)
#else
#define MINT7_9PL 0xFFFF
#endif
#if (INT10PL >= INT7PL) || (INT10PL == 0)
#define MINT7_10PL ~(1 << 9)
#else
#define MINT7_10PL 0xFFFF
#endif
#if (INT11PL >= INT7PL) || (INT11PL == 0)
#define MINT7_11PL ~(1 << 10)
#else
#define MINT7_11PL 0xFFFF
#endif
#if (INT12PL >= INT7PL) || (INT12PL == 0)
#define MINT7_12PL ~(1 << 11)
#else
#define MINT7_12PL 0xFFFF
#endif
#if (INT13PL >= INT7PL) || (INT13PL == 0)
#define MINT7_13PL ~(1 << 12)
#else
#define MINT7_13PL 0xFFFF
#endif
#if (INT14PL >= INT7PL) || (INT14PL == 0)
#define MINT7_14PL ~(1 << 13)
#else
#define MINT7_14PL 0xFFFF
#endif
#if (INT15PL >= INT7PL) || (INT15PL == 0)
#define MINT7_15PL ~(1 << 14)
#else
#define MINT7_15PL 0xFFFF
#endif
#if (INT16PL >= INT7PL) || (INT16PL == 0)
#define MINT7_16PL ~(1 << 15)
#else
#define MINT7_16PL 0xFFFF
#endif
#define MINT7 (MINT7_1PL & MINT7_2PL & MINT7
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮