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

2020-01-01 17:40发布

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中处理可以吗?他们有什么区别吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
catzsh
1楼-- · 2020-01-01 17:52
 精彩回答 2  元偷偷看……
beijisnow
2楼-- · 2020-01-01 23:40
说的是HAL库吧,跟霍尔没关系
亽亼
3楼-- · 2020-01-02 00:46
是没啥区别,但是st官方硬是弄出这些区别来
反而觉得这样会不会效率更低呢
zxq6
4楼-- · 2020-01-02 04:43
回调函数是分层设计的结果,因为底层在中断时候只管调用一个函数指针而不需要管具体的处理。具体的处理是上层回调函数实现的。这样底层就可以基本固定。
nongxiaoming
5楼-- · 2020-01-02 10:41
没啥区别,ST只是想让你忘掉这些中断服务函数和各种的清标志位处理罢了,做到你不用去关系这些玩意,踏踏实实写你那份代码,其他的他来处理,所以HAL对不懂的人来说好方便啊,对懂的人来说,好臃肿啊。
wind2100
6楼-- · 2020-01-02 14:13
 精彩回答 2  元偷偷看……

一周热门 更多>