NXP

2.1.3 外部中断

2019-07-12 11:56发布

2.1.3 外部中断   外部中断EINT0~EINT3,对应中断编号34~37,分配在管脚P2.10~P2.13,第二个复用功能。 外部中断可被配置成上升沿触发,下降沿触发或者电平触发。 注意:外部中断的中断状态寄存器,在初始化或任何时候更改模式寄存器(更改触发方式)也需要被清零。 在中断服务程序中,如果是沿触发,软件直接对中断状态寄存器清零,并立即有效;如果是电平触发,则清零的操作只在中断管脚的电平无效时才被执行。   初始化与配置: 1. 配置中断模式电平触发还是沿触发 2. 配置中断极性低电平/下降沿,高电平/上升沿 3. 清除中断标志位 4. 使能NVIC的外部中断 代码如下:  void Board_EINT_Init(void) { // 配置中断模式: 0=电平触发; 1=沿触发 LPC_SYSCTL->EXTMODE = (0 << ((uint32_t)(EINT_0))); // 配置中断极性: 0=低电平/下降沿; 1=高电平/上升沿 LPC_SYSCTL->EXTPOLAR = (0 << ((uint32_t)(EINT_0))); // 更改EXT模式后必须手动清除标志位 LPC_SYSCTL->EXTINT = (1 << ((uint32_t)(EINT_0))); // 配置中断优先级 // 清除中断挂起标志位 NVIC_ClearPendingIRQ(EINT0_IRQn); // 使能中断 NVIC_EnableIRQ(EINT0_IRQn); }
中断服务程序中清除中断标志位即可。代码如下: void EINT0_IRQHandler(void) { // TODO: 按键消抖 // 清除中断标志位. LPC_SYSCTL->EXTINT = (1 << ((uint32_t)(EINT_0))); if(pEINT0_ISR != 0) pEINT0_ISR(); }