打印
[STM32F1]

疑问:STM32中 中断回调函数 是在中断之中 执行,还是中断结束了执行??

[复制链接]
4842|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
86hupeng|  楼主 | 2019-3-23 11:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有个疑问:在STM32中, 中断回调函数 的执行是在当前中断之中,还是属于当前中断之外执行??
比如串口接收中断,触发串口接收之后,进入中断函数,会一大串判断,清零标志等等操作,HAL帮忙处理了,编程者 只需要去中断回调函数处理应用逻辑,那么对于 中断回调函数, 他的执行到底是在当前中断之中,还是当前中断之外?
这个问题的目的,如果中断回调函数还是在当前中断之中,那么意味着中断回调函数也必须短时间内结束,释放当前中断;
如果中断回调函数是当前中断之外触发另一个软中断,那么中断回调函数的处理时间至少可以放宽一些;

使用特权

评论回复
沙发
airwill| | 2019-3-24 10:36 | 只看该作者
呵呵, 这个问题问得好啊,涉及应用要求和编译器及内核系统,非常深刻。
从逻辑上讲,中断回调函数 的执行当然是在当前中断之中的。这个毋庸置疑哪,通常的 MCU 也都是这样的。
不过 STM32 这个 Cortex-M3 内核有个特例。由于中断返回和函数返回是相同的。如果中断服务最后一个函数是个小规模函数,涉及的寄存器少,没有参数,编译器(MDK)可能会先执行中断返回,再调用这个函数。
不过作为应用程序设计人员,还是认为中断回调函数的执行是在当前中断之中的比较妥当。

使用特权

评论回复
板凳
86hupeng|  楼主 | 2019-3-27 23:13 | 只看该作者
airwill 发表于 2019-3-24 10:36
呵呵, 这个问题问得好啊,涉及应用要求和编译器及内核系统,非常深刻。
从逻辑上讲,中断回调函数 的执行 ...

谢谢;
之前看了回调函数位置,还在中断之中,所有有点疑问,有那么一点点不确定;
从系统的角度来说,中断应该快进快出,我以为为了对得起“中断回调函数”的这个名称,会按字面意思做软优化,重新触发低级别的软中断; 看了是我想多了

使用特权

评论回复
地板
八层楼| | 2019-4-9 11:52 | 只看该作者
中断中调用啊

使用特权

评论回复
5
晓伍| | 2019-4-9 11:55 | 只看该作者
中断中吧应该

使用特权

评论回复
6
磨砂| | 2019-4-9 12:00 | 只看该作者
我理解的是在中断里边调用

使用特权

评论回复
7
wakayi| | 2019-4-9 12:08 | 只看该作者
不能结束了在执行吧

使用特权

评论回复
8
renzheshengui| | 2019-4-9 12:09 | 只看该作者
跑系统的话说不好 不过不跑系统的话肯定是在中断里边执行的

使用特权

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

本版积分规则

15

主题

233

帖子

2

粉丝