STM32
直播中

孙成红

8年用户 1451经验值
私信 关注
[问答]

请问stm32l152的外部中断EXTI9_5_IRQn怎么使用?

中断向量EXti9_5_IRQn包含了5种管脚的中断。如果我设置了GPIO6和GPIO7为外部中断。我使用HAL库,,那么中断来了,我怎么判断是哪个中断口来的呢?
因为使用了HAL库,不能使用EXTI_GetITStatus();这个函数来检查。请问有什么办法吗?

回帖(1)

张霞

2024-5-15 16:39:13
在STM32L152中,使用HAL库处理EXTI9_5_IRQn中断时,确实不能直接使用EXTI_GetITStatus()函数。但是,你可以通过以下步骤来判断是哪个中断口触发了中断:

1. 首先,确保你已经正确配置了GPIO6和GPIO7的外部中断。这包括设置GPIO模式、中断触发方式等。

2. 在EXTI9_5_IRQn中断处理函数中,使用HAL_EXTI_GetPending()函数来检查哪个中断触发了。这个函数是HAL库提供的,可以用来替代EXTI_GetITStatus()。

3. 根据HAL_EXTI_GetPending()的返回值,判断是哪个中断触发了。例如:

```c
void EXTI9_5_IRQHandler(void)
{
    if (__HAL_EXTI_GET_PENDING(EXTI_PIN_6) != RESET)
    {
        // GPIO6中断处理
        __HAL_EXTI_CLEAR_FLAG(EXTI_PIN_6);
    }
    else if (__HAL_EXTI_GET_PENDING(EXTI_PIN_7) != RESET)
    {
        // GPIO7中断处理
        __HAL_EXTI_CLEAR_FLAG(EXTI_PIN_7);
    }
    // 如果还有其他中断,可以继续添加判断
}
```

4. 在处理完中断后,使用__HAL_EXTI_CLEAR_FLAG()函数清除中断标志,以防止重复触发。

通过以上步骤,你可以在HAL库中判断是哪个GPIO引脚触发了EXTI9_5_IRQn中断,并进行相应的处理。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分