• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32中的回调函数与普通函数区别

lygo 2017-09-21 浏览量:3320

之前用hal库中断那里用到过回调函数,但是自己不是很理解。但是今天看代码的时候看到这个串口中断的回调函数,和普通函数到底有啥区别啊,在随便在哪用都行吗?都有哪些使用场景呢?

1.png

1 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 回调函数的一个典型应用就是允许底层的代码调用应用层的代码,这里应该也是这个用途,就是方便用户使用,用户只需要修改应用层代码
    • 发布于 2017-09-21
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:5
  • 中断的回调函数与标准库的中断函数其实使用方法是类似的。

    • 发布于2017-09-21
    • 举报
    • 评论 0
    • 2
    • 0

  • 引用之前我在论坛看到的一段话:【转自 硬石社区

    函数调用多肯定会影响运行速度
    回调函数可以说类似这个中断服务函数,在发生中断时候它会触发运行中断服务函数,如果我们“触发”到回调函数运行条件它就会运行回调函数
    再举例来说,我们一个定时器有多个中断源、比如更新中断、通道捕获中断、刹车中断等等,我们期望发生更新中断可以执行指定的A函数,发生
    通道捕获中断可以执行指定的B函数,发生刹车中断可以执行指定的C函数,然后实际上这个A、B、C函数是可以我们自己编程的(标准库就是需要自己写的)
    但是HAL库就帮你把A、B、C函数都定义好,命好名了,每次发生中断时候,它会自动去运行这些函数
    附带一个网站:  https://www.zhihu.com/question/19801131

    • 发布于2017-09-22
    • 举报
    • 评论 0
    • 2
    • 0

  • stm32中使用的回调函数跟普通函数不一样的地方就是通过指针调用,仅此而已。
    • 发布于2017-09-22
    • 举报
    • 评论 0
    • 2
    • 0

  • 个人认为这是HAL库为了方便用户代码做的一个措施,在中断函数中已经调用了这个回调函数,运行到中断的位置时,再回来找到这个回调函数并运行,这样,就保证了中断函数库的完整性。

    实际上,按照HAL库的逻辑,我们使用时是去调用这个HAL库里的函数,这个是正常的使用方式。对于中断来讲,需要另一种方式:程序运行到中断入口,由HAL库函数来调用客户自己定义的函数,这中行为方式就称为回调函数了。

    • 发布于2017-09-21
    • 举报
    • 评论 0
    • 1
    • 0

  • 通常的编程是上层调用下层函数,回调函数就是下层调用上层提供好的函数,这样的函数就叫回调函数。而且很多回调函数都是用过指针传递
    • 发布于2017-09-22
    • 举报
    • 评论 0
    • 1
    • 0

相关问题

问题达人换一批

STM32中的回调函数与普通函数区别