当前位置:编程学习 > wap >>

请教问题

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)能给出原因吗? --------------------编程问答-------------------- 什么呀?arm9
--------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 是很乱,请解释明白 --------------------编程问答-------------------- 汗死,我说怎么这么看不懂,原来是“移动平台” --------------------编程问答-------------------- 我也想学学呀 --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- --------------------编程问答-------------------- vxworks_linux ?????
请问用的是什么编译器?GCC么?
没有研究过中断驱动。。
望讲解 --------------------编程问答-------------------- 看不懂啊。。。。。。。。。。。。
--------------------编程问答-------------------- 这方面没有研究 --------------------编程问答-------------------- interrupt !
不知道 --------------------编程问答-------------------- 中断处理函数无参数,无返回值。
当一个函数被定义为中断服务程序 (ISR)的时候(类似于__interrupt、#program interrupt等关键字),编译器会自动为该函数增加中断服务程序所需要的中断现场入栈和出栈代码。 --------------------编程问答-------------------- what?从来没深究过这些问题也!
补充:移动开发 ,  超极本开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,