打印

中断函数为什么不能长?

[复制链接]
17027|48
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
areshan|  楼主 | 2010-6-23 14:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家在用中断函数的时候都说中断函数里不能太长。为什么中断函数不能太长?是中断函数太长会占用太多的CPU时间吗???是中断函数太长,中断可能嵌套,堆栈会覆盖通用寄存器的数据吗?有高手研究过这个问题吗?希望大家能发表自己的看法!!!

相关帖子

沙发
ayb_ice| | 2010-6-23 15:10 | 只看该作者
中断的初衷是为了提高系统实时性
中断处理太长,会影响同级的中断响应,其它中断谈何实时
...

使用特权

评论回复
板凳
acute1110| | 2010-6-23 15:49 | 只看该作者
你想想如果中断处理的时间太长了,比如很长很长,长的第二个中断就接受不到了,是否系统会出问题?

使用特权

评论回复
地板
areshan|  楼主 | 2010-6-23 15:50 | 只看该作者
有道理,中断就是为了让CPU去处理一些更紧急的事情。。。。。。。。。。。。。。 2# ayb_ice

使用特权

评论回复
5
areshan|  楼主 | 2010-6-23 15:55 | 只看该作者
但听有人说“中断时间长会发生数据溢出”,这个我就觉得有点奇怪了。。。中断嵌套到多少层数据会溢出呢?要么是编译器编译有点问题,要么单片机硬件的问题。我觉得中断就是一个函数,和普通函数一样。程序跳转换压栈。中断和数据溢出好像是没有任何关系!!!

使用特权

评论回复
6
acute1110| | 2010-6-23 16:01 | 只看该作者
不要随便就用中断的嵌套,每嵌套一次,栈空间就用的越多,如果栈空间不够了,你要将嵌套的中断所涉及的任务(有os)或函数(无 os)尽快的执行来释放栈空间,也就是说栈不够用了,要设置一个开关来关闭嵌套的功能。不然系统就飞了。--这部分的设计不像我写的这么简单,要复杂很多!!

使用特权

评论回复
7
airwill| | 2010-6-23 16:05 | 只看该作者
是不宜长, 并不是就不能长,  谁规定就不能长了.
只要软件和时间安排合理, 可以把所有的任务都放在中断里完成, 主程序 main() 就执行一个

  while (1) idle(); // 休眠的宏指令

这样的软件实时性和稳定性照样就很好

使用特权

评论回复
8
acute1110| | 2010-6-23 16:38 | 只看该作者
世事无绝对

使用特权

评论回复
9
ayb_ice| | 2010-6-23 16:58 | 只看该作者
给你个保时捷,你非要当桑塔纳使用
也可以
...

使用特权

评论回复
10
acute1110| | 2010-6-23 17:01 | 只看该作者
拼了命;还可以当牛车

使用特权

评论回复
11
zc3909| | 2010-6-23 17:13 | 只看该作者
中断服务程序还是速战速决的好

使用特权

评论回复
12
black.lu| | 2010-6-23 20:18 | 只看该作者
对,不易过长,一影响实时性,二容易中断嵌套

使用特权

评论回复
13
xhtxzxw| | 2010-6-23 22:00 | 只看该作者
中断就像拉屎。属于无法准确预测、随时可能发生、而且必须及时尽快处理的事。

谁也不想便秘吧?

中断响应也是一样的道理。

使用特权

评论回复
14
ypj005| | 2010-6-24 13:21 | 只看该作者
简单的应用中,就靠中断干活的,无所谓长短;
复杂的那就看具体要求了!
总之,也要知道无用之有用的道理!

使用特权

评论回复
15
icecut| | 2010-6-24 13:24 | 只看该作者
lz慢慢体会.难以言说.

使用特权

评论回复
16
sydyh43| | 2010-6-24 13:50 | 只看该作者
跟其他因素综合起来考虑就行

使用特权

评论回复
17
nckdone| | 2010-6-24 14:51 | 只看该作者
拉什么车,用什么马!长短在一念之间。

使用特权

评论回复
18
tjcao| | 2010-6-24 15:35 | 只看该作者
不考虑实际应用,说中断函数不能太长,这个说法是错误的,会误人子弟的。只要合理安排,没有长短之分。你可以把main()函数也认为是一个特殊的中断函数,复位执行的中断函数。

使用特权

评论回复
19
一棵小草| | 2010-6-24 20:24 | 只看该作者
嘿嘿,太长是多长啊?LZ举个时间嘛。。。不会是在中断里面刷新显示吧?其中还有10ms的软延时?;P

使用特权

评论回复
20
lshaiou| | 2010-6-25 16:35 | 只看该作者
中断时间太长问题多多!

使用特权

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

本版积分规则

127

主题

728

帖子

0

粉丝