指出下列代码的错误:
interrupter double computer_area(double radius)
{
double area=PI*radius*radius;
printf("aread=%f\n",area);
return area;
}
解析:中断是嵌入式编程中最重要的组成部分,这导致了很多编译器开发商提供了一种扩展----支持中断。于是产生了一个新的关键字Interrupt;
1,ISR不能返回一个值。
2,ISR不能传递参数
3,在许多编译器和处理器中,浮点一般都是不可重入的。有些处理器/编译器需要让额外的寄存器入栈,有些处理器/编译器就不允许在ISR中作浮点运算。另外ISR应该是短而有效地,在里面做浮点运算是不明智的。‘
4,在ISR中不使用printf函数