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

子程序放在中断内调用好还放在中断外调用好!

[复制链接]
楼主: diannaoza
手机看帖
扫描二维码
随时随地手机跟帖
21
conwh| | 2007-6-23 02:59 | 只看该作者 回帖奖励 |倒序浏览

放到外面就是养成一个良好的习惯

在中断不频繁和利用率不是太高的情况下,在内、外都无关紧要的(也就是匠人说的,前后台别犯冲动就行),但有众多中断时,你就不好保证中断是什么时候来的,所以这时将执行程序放到外面是保证系统正常运行的关键。做程序的关键就是1)保证程序运行的流畅性;2)程序阅读的连贯性;3)中断间的相互关联以及对中断丢失的最坏评估。

使用特权

评论回复
22
HotPower| | 2007-6-23 03:45 | 只看该作者

现在都成先生了,俺搬个小凳上夜校~~~

使用特权

评论回复
23
HotPower| | 2007-6-23 08:04 | 只看该作者

哈哈~~~该听早课了~~~

在自留地里劳动了一会~~~一会该去下地了~~~

教授以前每天打电话,今天不知何故不来,估计是怕给我上"OS"的课,怕我不给学费~~~

使用特权

评论回复
24
gyt| | 2007-6-23 09:35 | 只看该作者

其实双方都有道理

我是按照自己的习惯,尽量放在外面处理,觉得这样自己看起来结构比较清楚一些。

使用特权

评论回复
25
diannaoza|  楼主 | 2007-6-23 15:47 | 只看该作者

其实双方都有道理

做技术的能这样用双方有道理的话???
中断都分个:优先高...优先低。
有见解的不访说说,拿板橙听课。谢谢!

使用特权

评论回复
26
ocon| | 2007-6-23 16:05 | 只看该作者

15楼有道理,具体应用具体分析,有时候放里边好有时候放外

从统计角度看,多数应用确实是应该放在中断外执行才是最优的结构。

使用特权

评论回复
27
zxq1234508| | 2007-6-23 16:17 | 只看该作者

搬个凳子听课咯

使用特权

评论回复
28
HWM| | 2007-6-23 16:27 | 只看该作者

其实特简单的,

就是中断内调用可以,中断外调用也可以。但就是别内外一块儿调,那样的话就非爆了不可。

使用特权

评论回复
29
ayb_ice| | 2007-6-24 10:56 | 只看该作者

随便说说

一般是放在主循环较好,这样可以防止一些冲突,但有可能不能得到及时服务,而中断一般能及时得到处理,中断一般是收集数据,然后设定标志。当然良好的程序结构很重要,如:程序如果能做到不调用软件长处延时(MS级),CPU是有足够的时间的,一个延时10MS的程序,CPU加以利用可以做很多事。。。

使用特权

评论回复
30
pheavecn| | 2007-8-15 23:31 | 只看该作者

庖丁解牛

庖丁解牛时,下刀完全根据观察的结果和以前的解牛经验。

在中断内或外调用,取决于中断、主循环、子程序的实时要求及实时性能。如果对这些都了然如胸,则下刀就没有错。

特殊情况,内外一块调也不是不可能。

不过,大部分情况还是在外头(主循环)调用子程序。因为中断有急迫性,非时钟中断的话,还有不可预测性。而主循环是可预测的。

使用特权

评论回复
31
dengm| | 2007-8-16 00:50 | 只看该作者

中断内调用子程序可能要用多一些内存、保存环境更多

使用特权

评论回复
32
diannaoza|  楼主 | 2007-8-16 02:15 | 只看该作者

内部与外调结论

从以上讨论中。结论“外调优于内调”。当然你说内调好你就用内调,不强加你也使用外调结构。

使用特权

评论回复
33
救火车| | 2007-8-18 13:31 | 只看该作者

单片机编程主要是要考虑堆栈的承受能力。

每次函数调用都要保护现场,向堆栈里压入数据。函数发生多层调用,就要压入堆栈更多数据。
要考虑最坏的情况,在函数调用的最深层,再来个中断,(中断里再调函数或者产生了一个中断的中断)。这时要占用多少堆栈?只要堆栈不越界就没问题。

说句题外话,单片机编程决不用递归。

使用特权

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

本版积分规则