标题: 关于stm32单片机中断void TIM4_IRQHandler(void)函数 [打印本页]

作者: 陌路花开    时间: 2021-9-2 09:58
标题: 关于stm32单片机中断void TIM4_IRQHandler(void)函数
在每个外设的中断里都有一个中断函数比如void TIM4_IRQHandler(void)函数,当我们调用HAL_TIM_PWM_Start_IT(&htim4,TIM_CHANNEL_1)函数时会进入刚才写的中断函数里面,而在中断函数里面还有有一个HAL_TIM_IRQHandler(&htim4)函数,所以我想问如果将HAL_TIM_IRQHandler(&htim4)函数从void TIM4_IRQHandler(void)函数里面删除和不删除的区别在哪?望路过的道友们解答一下,万分感谢!

作者: sinside    时间: 2021-9-3 08:34
这是芯片的程序库帮你做好的结果. 如果你不用HAL库, 自己添加自己的中断处理程序, 当然可以删除.

之所以用 HAL_TIM_IRQHandler(&htim4), 因为这个一个通用函数, 大部分的中断处理都同样用此函数, 只是参数不一样而已. 如果你不用通用的处理, 当然页可以自己写.

自己写可能会节省一些存储空间, 但是会漏掉一些出错处理. 所以建议还是用库里面的函数.

另外, 如果通用的函数满足不了你的处理要求, 可以在HAL_TIM_IRQHandler(&htim4)之前, 之后加入你自己的处理代码.

注意观察TIM4_IRQHandler里面会有如下USER CODE的注释, 就是你可以在这些地方插入你的处理代码, 具体在之前还是之后取决你的需求.

/* USER CODE BEGIN TIM6_IRQn 0 */
  这里加入你的中断处理代码
  /* USER CODE END TIM6_IRQn 0 */
  HAL_TIM_IRQHandler(&htim6);
  /* USER CODE BEGIN TIM6_IRQn 1 */
这里也可以加入你的中断处理代码
  /* USER CODE END TIM6_IRQn 1 */
作者: 陌路花开    时间: 2021-9-3 10:37
sinside 发表于 2021-9-3 08:34
这是芯片的程序库帮你做好的结果. 如果你不用HAL库, 自己添加自己的中断处理程序, 当然可以删除.

之所 ...

受教了,谢谢您!
作者: jizhongbiao    时间: 2021-9-3 11:42
你看一下那个回调函数的实现就知道了。自己写就好,hal为了可移植性做了很多冗余的判断。
作者: 陌路花开    时间: 2021-9-3 14:17
jizhongbiao 发表于 2021-9-3 11:42
你看一下那个回调函数的实现就知道了。自己写就好,hal为了可移植性做了很多冗余的判断。

嗯嗯,谢谢您。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1