STM32/STM8技术论坛
直播中

华一颖

7年用户 181经验值
私信 关注
[问答]

请问HAL库中的中断在callback回调函数和中断函数中处理有何区别

HAL库中的中断,在callback回调函数和中断函数中处理有何区别
比如定时中断
在it.c中的中断函数基本不处理内容
void tiM2_IRQHandler(void)
{
  /* USER CODE BEGIN TIM2_IRQn 0 */

  /* USER CODE END TIM2_IRQn 0 */
  HAL_TIM_IRQHandler(&htim2);
  /* USER CODE BEGIN TIM2_IRQn 1 */

  /* USER CODE END TIM2_IRQn 1 */
}

真正的处理在
main.c中的
        void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
        {
                //if(htim == (&htim1))
                if(TIM1 == htim->Instance)
                {
                }

        }

如果闲callback麻烦,直接在.c中处理可以吗?他们有什么区别吗?

回帖(9)

王聪

2018-11-14 08:52:18
没啥区别,HAL只是给你提供了一个基本框架,便于统一
举报

孙婷婷

2018-11-14 09:08:07
可以,这个只是方便移植。比如从103移植到407。
举报

lee_st

2018-11-14 09:17:12
是的
举报

李敏

2018-11-14 09:24:28
其实ST是把中断处理的细节给封装了起来,回掉函数是暴露给开发者的接口函数,开发者只需要在回调函数中实现特定的功能即可。这样的好处是简化了开发过程(理论上是这样的,但是对于用惯了标准库的我来说,还是有些不适应,感觉都被束缚了,还是习惯自己动手实现中断过程)。同时也便于不同型号的MCU软件之间的移植。
举报

刘萍

2018-11-14 09:40:47
这样 便于 移植,架构统一
举报

杨丽

2018-11-14 09:55:08
学习。。。。
举报

陈霞

2018-11-14 10:10:46
举报

李建军

2018-11-14 10:29:45
原来是这样的
举报

谭子薇

2018-11-14 10:41:25
为了方便移植。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分