个人认为设计的不合理,应该每个中断都单独配一个回调,而不是整一个公共的回调,详情看下面说明:
比如我们要用多个定时器实现多个功能,且用到中断,中断里面都会用下面这个函数HAL_TIM_IRQHandler
void TIM1_UP_IRQHandler(void)
{
HAL_TIM_IRQHandler(&htim1);
}
void TIM7_IRQHandler(void)
{
HAL_TIM_IRQHandler(&TimHandle);
}
从而会有一个公共回调函数:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance==TIM7)
{
HAL_IncTick();
}
else if(htim->Instance==TIM1)
{
SEGGER_RTTProcess();
}
}
早期使用标准库的时候,就因为中断集中在 stm32h7xx_it.c文件里面处理给移植带来不必要的麻烦,经常移植的时候忘了看这个文件,很坑。所以就统一的放在对应的驱动代码里面实现。
现在莫名的有多了个公共回调,怎么处理好些,继续走回老路子,统一在 stm32h7xx_it.c里面处理? 这一点真是坑。 |