HAL库 中的 中断函数 一般默认为
HAL_xxx_xxxxxxxxCallback()
比如:
定时器的溢出中断函数:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
定时器的触发中断函数:
void HAL_TIM_TriggerCallback (TIM_HandleTypeDef *htim)
定时器的 输入捕获函数:
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
这些函数的功能 就是 程序在运行时 进入对应中断后的函数,这也是常规的框架结构
但是 如果有一种情况 ,需要程序在运行时 对于同一个中断可以执行不同的 中断函数
改怎么做呢?
大多数人的思路就是在 上面的中断函数中做 逻辑分支,当然是没问题的,但是这样会导致中断函数变得庞大,容易给任务切换时带来更多的堆栈开销,而且不利于程序的模块化,一旦运行,中断函数的功能难以修改。
还有一种办法,HAL库 中给用户提供了另一种方式
看下面的宏定义:
当这些宏定义 被设为1 后
每个外设的中断函数 将通过 xxx_RegisterCallback () 注册函数的方式来 关联,
比如定时器的中断函数要 调用
HAL_StatusTypeDef