打印

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

[复制链接]
166|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

粉丝