协议栈:mesh1.0.0
芯片:2530
问题:请问我配置了P1_2引脚下降沿中断,程序不断进入中断是什么原因?测试时在中断函数内部打断点,发现能进入,但是不断重复进入。中断代码如下,求解谢谢。
HAL_ISR_FUNCTION( halKeyPort1Isr, P1INT_VECTOR ) { HAL_ENTER_ISR(); if (HAL_KEY_DoorSW_PXIFG & HAL_KEY_DoorSW_BIT) { halProcessKeyInterrupt(); } if (HAL_KEY_Power_PXIFG & HAL_KEY_Power_BIT) // P1_2引脚为 power_key { halProcessKeyInterrupt(); } /* Clear the CPU interrupt flag for Port_1 PxIFG has to be cleared before PxIF */ HAL_KEY_DoorSW_PXIFG = 0; HAL_KEY_Power_PXIFG = 0; HAL_KEY_CPU_PORT_1_IF = 0; CLEAR_SLEEP_MODE(); HAL_EXIT_ISR(); }
void halProcessKeyInterrupt (void) { bool valid=FALSE; if (HAL_KEY_DoorSW_PXIFG & HAL_KEY_DoorSW_BIT) /* Interrupt Flag has been set */ { HAL_KEY_DoorSW_PXIFG = ~(HAL_KEY_DoorSW_BIT); /* Clear Interrupt Flag */ valid = TRUE; } if (HAL_KEY_SW_5_PXIFG & HAL_KEY_SW_5_BIT) /* Interrupt Flag has been set */ { HAL_KEY_SW_5_PXIFG = ~(HAL_KEY_SW_5_BIT); /* Clear Interrupt Flag */ valid = TRUE; } if (HAL_KEY_Power_PXIFG & HAL_KEY_Power_BIT) /* Interrupt Flag has been set */ { HAL_KEY_Power_PXIFG &= ~(HAL_KEY_Power_BIT); /* Clear Interrupt Flag */ // HAL_KEY_Power_PXIFG =0; /* Clear Interrupt Flag */ valid = TRUE; } if (valid) { osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT, HAL_KEY_DEBOUNCE_VALUE); } }