协议栈: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);
}
}


