使用“ EXTI_IRQHandler”和“ EXTI_Callback”有什么区别?

时间:2019-08-22 15:04:25

标签: c stm32 hal

我正在将HAL库用于带有STM32微控制器的项目。

在STM提供的示例代码中,他们使用HAL_GPIO_EXTI_Callback进行按钮中断。但是,我在课堂上了解到我们需要使用IRQHandler来处理中断。

所以我的问题是何时使用HAL_GPIO_EXTI_CallbackHAL_GPIO_EXTI_IRQHandler处理中断?

1 个答案:

答案 0 :(得分:2)

在ST的示例项目中,单个中断有多个函数调用:

  • 中断处理程序本身称为EXTI15_10_Handler。该函数的地址在向量表中指定。它是中断线EXTI15_10的通用处理程序,默认情况下它被“路由”到不执行任何操作的默认函数。由于它是一个较弱的符号,因此您可以根据需要重新定义它。

  • 如果将EXTI15_10中断线与标准GPIO一起使用,则EXTI15_10_Handler应调用HAL_GPIO_EXTI_IRQHandler。这是HAL提供的功能。

  • 后一个函数清除IT标志,然后调用HAL_GPIO_EXTI_Callback,这也是一个弱函数,默认情况下不执行任何操作。这是处理GPIO所需实现的功能。