我正在将HAL库用于带有STM32微控制器的项目。
在STM提供的示例代码中,他们使用HAL_GPIO_EXTI_Callback
进行按钮中断。但是,我在课堂上了解到我们需要使用IRQHandler来处理中断。
所以我的问题是何时使用HAL_GPIO_EXTI_Callback
和HAL_GPIO_EXTI_IRQHandler
处理中断?
答案 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所需实现的功能。