打印
[应用相关]

在callback回调函数和中断函数中处理有何区

[复制链接]
2515|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhuotuzi|  楼主 | 2018-11-16 12:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
其实ST是把中断处理的细节给封装了起来,回掉函数是暴露给开发者的接口函数,开发者只需要在回调函数中实现特定的功能即可。这样的好处是简化了开发过程(理论上是这样的,但是对于用惯了标准库的我来说,还是有些不适应,感觉都被束缚了,还是习惯自己动手实现中断过程)。同时也便于不同型号的MCU软件之间的移植。
沙发
zhuotuzi|  楼主 | 2018-11-16 12:28 | 只看该作者
以上是网上回答的。那么为何我在官方的GPIO中断例子里只看到了回调函数,没有看到传统的中断处理函数呢

使用特权

评论回复
板凳
zhuotuzi|  楼主 | 2018-11-16 12:34 | 只看该作者

这是main文件里的
实际上在另外一个文件实现了

再查找

藏的特别深,是不是兄弟们
我们这时候才明白,什么回调函数啊, 就是封装到中断处理函数中的一个子函数而已,哈哈。

使用特权

评论回复
地板
zhuotuzi|  楼主 | 2018-11-16 12:34 | 只看该作者
所以主贴中的那段话是非常正确的了。

使用特权

评论回复
5
xixi2017| | 2018-11-18 18:13 | 只看该作者
嗯,是的,好多函数封装层次太多

使用特权

评论回复
6
airwill| | 2018-11-18 22:29 | 只看该作者
虽然封装了中断处理,  又露了回调函数, 总是有个缺口
不知道这个封装有没有必要, 搞得大家理解麻烦

使用特权

评论回复
7
whtwhtw| | 2018-11-18 22:32 | 只看该作者
回调函数的关键是要理解__weak的作用,以及如何使用回调函数

使用特权

评论回复
8
huzi2099| | 2018-11-19 09:56 | 只看该作者
还是那句话,想做细致了不能指望别人

使用特权

评论回复
9
戈卫东| | 2018-11-19 11:20 | 只看该作者
ST可能想把这个库做成在用户的角度看选用哪一个型号MCU都一样的。。。

使用特权

评论回复
10
戈卫东| | 2018-11-19 11:22 | 只看该作者
但是它有额外的资源需求和增加了中断处理时间。。。。。

使用特权

评论回复
11
晓伍| | 2018-11-19 15:39 | 只看该作者
只是封装一下?

使用特权

评论回复
12
八层楼| | 2018-11-19 16:38 | 只看该作者
感觉这样很安全呀

使用特权

评论回复
13
labasi| | 2018-11-21 13:04 | 只看该作者
一针见血呀

使用特权

评论回复
14
zhuotuzi|  楼主 | 2018-11-27 17:43 | 只看该作者
airwill 发表于 2018-11-18 22:29
虽然封装了中断处理,  又露了回调函数, 总是有个缺口
不知道这个封装有没有必要, 搞得大家理解麻烦 ...

目的是好的,是怕你不知道中断发生后怎么处理,因为除了执行你的中断任务外还要配合清理中断标志,恢复中断等中断操作的一系列动作。本意思让你不用自己操作这些跟任务无关的动作。
但是嵌套层太多,其实影响到了系统的性能。

使用特权

评论回复
15
zhuotuzi|  楼主 | 2018-11-27 17:44 | 只看该作者
戈卫东 发表于 2018-11-19 11:22
但是它有额外的资源需求和增加了中断处理时间。。。。。

是的,确实增加了处理时间,特别是嵌套后,这个跳转严重影响了系统性能。
目的是好的,就是怕有些人不知道中断发生后怎么清理标志,恢复中断等。结果干了坏事。

使用特权

评论回复
16
zhuotuzi|  楼主 | 2018-11-27 17:45 | 只看该作者
八层楼 发表于 2018-11-19 16:38
感觉这样很安全呀

嗯,各有利弊吧,不同角度看,好处 是不同的

使用特权

评论回复
17
八层楼| | 2018-12-1 19:10 | 只看该作者
是的是的 也只能这样理解了

使用特权

评论回复
18
Prry| | 2018-12-1 23:18 | 只看该作者
回调函数对于初学者不好理解,因为大家都习惯顺序下来的代码逻辑,用多了就体会到回调函数的好处。最明显的就是可以“分层”,把主体程序抽象出来,经常变动的通过外部回调函数实现。操作系统驱动就是有点这个意思。

使用特权

评论回复
19
zhuotuzi|  楼主 | 2018-12-19 20:01 | 只看该作者
Prry 发表于 2018-12-1 23:18
回调函数对于初学者不好理解,因为大家都习惯顺序下来的代码逻辑,用多了就体会到回调函数的好处。最明显的 ...

是的,让一部分代码不用自己写了。

使用特权

评论回复
20
ayb_ice| | 2018-12-20 17:08 | 只看该作者
本帖最后由 ayb_ice 于 2018-12-20 17:09 编辑

让你只关注应用相关的代码,你还不满意

收到数据该怎么处理,写驱动的人肯定是不知道的,这与具体应用相关,所以把应用相关的做成回调函数,其它的(比如清除相关标志。。。)应用就不用关心了,这不好吗

相当于买个毛坯房,用户只关心怎么装修,难道怎么做房子还要操心吗
回调函数大部分也是在中断里调用的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

201

主题

3300

帖子

7

粉丝