HAL库里面多个同种类外设使用同一个中断回调函数的确是不爽

[复制链接]
377|0
 楼主| kaloulin 发表于 2018-8-10 17:06 | 显示全部楼层 |阅读模式
个人认为设计的不合理,应该每个中断都单独配一个回调,而不是整一个公共的回调,详情看下面说明:




比如我们要用多个定时器实现多个功能,且用到中断,中断里面都会用下面这个函数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里面处理? 这一点真是坑。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

439

主题

448

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部