6558|7

60

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

8位单片机为什么在中断里调用函数执行起来比把函数同容直接写中断程序里要慢很多啊 [复制链接]

8位单片机为什么在中断程序里调用其它函数执行起来很慢,而把函数内容直接写在中断程序里执行起来要快很多,这是为什么啊。

最新回复

会有差别,不过慢很多不应该。   详情 回复 发表于 2009-11-3 20:38
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
不会是飞了吧?

在ISR里面调用函数,说不定导致了堆栈溢出~~~~~~
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我的一点不成熟看法:
函数需要调用的参数越多,调用起来就越慢。写成函数是为了清晰和可维护性,现在CPU速度都很快,慢个七八个指令时间也不会太慢。
你是怎么测的慢很多啊?
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

4
 
经常在ISR里调函数,没有异常的飘过。。。
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

5
 
函数调用需要"开销"
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

6
 
1。中断调用函数比函数直接写在中断函数中,多4个单周期。正常情况下,差4个单指令周期,不会慢很多。
2。考虑因素:
   2.1 如果在执行函数的时候发生了其他你不希望的中断,会又增加一级堆栈。所以被中断调用的函数要特变注意,是否允许代码响应其他中断。建议不要允许其他中断。
   2.2 最好不允许调用自己的中断,如果在此发生调用自己的中断发生,一般的MCU会发生异常,造成程序运行异常,可能变慢。
   2.3 中断函数中包括调用的函数,最好不要用指针(所谓的间接寻址),一旦异常发生,代码就不可以控制。如果使用,则增加判断指针数据是否异常的判断。否则也会出现代码变慢的情况。真实内部运行情况是,非法的指针从非法数据递增到代码正常所需的数据区。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

7
 
我觉得应该是两者之间寄存器和栈使用不同。
前者的方法,函数应该需要转到都中断函数使用的寄存器和栈上面来
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

8
 
会有差别,不过慢很多不应该。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表