This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

2530中断

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