cancel
Showing results for 
Search instead for 
Did you mean: 

Cannot identify IRQ reason - STM32H753

Pavel A.
Evangelist III

I have the following EXTI9_5 handler: (yes, with HAL)

void EXTI9_5_IRQHandler(void)
{
    if (__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_6) != 0)
    {
      __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_6);
      return;
    }
 
    if (__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_5) != 0)
    {
      __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_5);
      return;
    }
    if (__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_7) != 0)
    {
      __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_7);
      return;
    }
    if (__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_8) != 0)
    {
      __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_8);
      return;
    }
    if (__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_9) != 0)
    {
      __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_9);
      return;
    }
    __BKPT(6); // unknown reason
    __NOP();
    __NOP();
}

After enabling EXTI9_5, it permanently hits the __BKPT(6) line.,

This means, all checks for pins 5,6,7,8,9 fail and the reason of the interrupt is not identified.

How this is possible? Can EXTI9_5 interrupt occur for other reasons besides of pins 5,6,7,8,9?

Puzzled...

-- pa

11 REPLIES 11

Thank you Clive, it was it! DSB before return.

-- pa