发新帖我要提问
123
返回列表
打印

中断函数为什么不能长?

[复制链接]
楼主: areshan
手机看帖
扫描二维码
随时随地手机跟帖
41
ayb_ice| | 2010-6-29 08:19 | 只看该作者 回帖奖励 |倒序浏览
一般人每天只吃3顿饭
可能也有个别人一天不吃3顿饭
...

使用特权

评论回复
42
wzl-xx@163.com| | 2010-6-29 15:34 | 只看该作者
终端的长短根据系统而定,如果有同级的中断则不宜过长,如果优先级别比较高也不宜过长。

使用特权

评论回复
43
wzl-xx@163.com| | 2010-6-29 15:37 | 只看该作者
ayb_ice发表于 2010-6-29 08:19 | 只看该作者 回复 引用 评分 报告 返回版面 TOP  得分:0
41楼: 一般人每天只吃3顿饭
可能也有个别人一天不吃3顿饭
...

  

有意思么?

使用特权

评论回复
44
ZRL700424| | 2010-6-30 08:11 | 只看该作者
没意思

使用特权

评论回复
45
天风立马| | 2014-4-28 21:13 | 只看该作者
看了回复,没有正解.鉴定完毕.

使用特权

评论回复
46
天风立马| | 2014-4-28 21:18 | 只看该作者
天风立马 发表于 2014-4-28 21:13
看了回复,没有正解.鉴定完毕.

为什么中断函数不能过长?其实未必不可以长.解释一下:中断函数的数据是要放在堆栈的.中断函数时间长的话,如果这期间继续发生中断,而且一样很长,又发生中断,这样你的堆栈会越来越少直到溢出.当然这是个比较极端的假设.拿51来说,RAM才那么点.同理这也是没被调用的函数产生警告的原因,因为没被调用的函数编译时会被当作中断函数,而把他的变量放在堆栈,占用资源.甚至导致溢出...

使用特权

评论回复
47
jimingming123| | 2014-5-22 17:22 | 只看该作者
airwill 发表于 2010-6-23 16:05
是不宜长, 并不是就不能长,  谁规定就不能长了.
只要软件和时间安排合理, 可以把所有的任务都放在中断里完 ...

我现在写的程序就是这样子,不过还没测试, 不知道行不行  主程序就while(1){}  所有工作都在一个中断中完成, 之所以这样写是因为 我原来中断做一件事 然后主程序做另一件事,不知道为什么结果总是错的,输出波形很乱,才尝试这种方法,但愿可以啊

使用特权

评论回复
48
飘落枫叶| | 2015-10-29 09:17 | 只看该作者
airwill 发表于 2010-6-23 16:05
是不宜长, 并不是就不能长,  谁规定就不能长了.
只要软件和时间安排合理, 可以把所有的任务都放在中断里完 ...

是的,我最近就在做这样的工作。main函数初始化时钟和外设配置(开启中断),然后挂起所有中断函数,等待中断请求。这里所有的处理都是在中断内接收,处理,发送。只要卡住时间这一个环节(非常重要),OK。

使用特权

评论回复
49
梦在那| | 2015-10-31 16:58 | 只看该作者
ZRL700424 发表于 2010-6-26 11:28
比如你是一个作家,每天在家里埋头写作(主程序),偶尔会接一下电话(中断),如果中断时间太长的话(煲电 ...

这个比喻非常生动啊

使用特权

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

本版积分规则