请教问题

vxworks_linux 2008-10-28 03:51:30
加精
interrupt double compute_area (double radius)
  {
  double area = PI * radius * radius;
  printf("\nArea = %f", area);
  return area;
  }
这个函数有太多的错误了,以至让人不知从何说起了:
1)ISR 不能返回一个值。如果你不懂这个,那么你不会被雇用的。
2) ISR 不能传递参数。如果你没有看到这一点,你被雇用的机会等同第一项。
3) 在许多的处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额处的寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。此外,ISR应该是短而有效率的,在ISR中做浮点运算是不明智的。
4) 与第三点一脉相承,printf()经常有重入和性能上的问题。如果你丢掉了第三和第四点,我不会太为难你的。不用说,如果你能得到后两点,那么你的被雇用前景越来越光明了。
对于1)ISR 不能返回一个值 是指中断的入口函数不能返回一个值,原因是什么?
如果中断的入口函数A 调用一个子过程B ,B 是可以返回一个值的吗?
对于2)能给出原因吗?
...全文
259 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyyay 2010-09-28
  • 打赏
  • 举报
回复
what?从来没深究过这些问题也!
kyle 2009-05-16
  • 打赏
  • 举报
回复
中断处理函数无参数,无返回值。
当一个函数被定义为中断服务程序 (ISR)的时候(类似于__interrupt、#program interrupt等关键字),编译器会自动为该函数增加中断服务程序所需要的中断现场入栈和出栈代码。
ken_scott 2008-11-29
  • 打赏
  • 举报
回复
interrupt !
不知道
ken_scott 2008-11-29
  • 打赏
  • 举报
回复
这方面没有研究
li259 2008-11-10
  • 打赏
  • 举报
回复
看不懂啊。。。。。。。。。。。。
raylai27509570 2008-11-09
  • 打赏
  • 举报
回复
学习
wlia 2008-11-09
  • 打赏
  • 举报
回复
vxworks_linux ?????
请问用的是什么编译器?GCC么?
没有研究过中断驱动。。
望讲解
nazinavy 2008-11-07
  • 打赏
  • 举报
回复
我也想学学呀
rcbblgy 2008-11-07
  • 打赏
  • 举报
回复
汗死,我说怎么这么看不懂,原来是“移动平台”
goodcompany 2008-11-06
  • 打赏
  • 举报
回复
是很乱,请解释明白
sea_soul 2008-11-06
  • 打赏
  • 举报
回复
kaifabanlyn 2008-11-06
  • 打赏
  • 举报
回复
什么呀?arm9

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧