在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中断,并进行相应的处理。
在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中断,并进行相应的处理。
举报