请教中断服务子程序ISR的问题
我在网上看到说ISR不能有返回值和参数,可是在wince的ISR,OEMInterruptHandle()这个函数中既有返回值也有参数啊,这个OEMInterruptHandle函数就是单ISR模型的中断服务子程序啊。
原文如下:
一、ISR(中断服务子函数)
首先来看一段错误的ISR代码:
_interrupt double compute_area(double radius)
{
printf("\n Area=%f",area);
return area;
}
你能看出其中的错误么?
中断是嵌入式系统中重要组成部分,很多编译器开发商都让标准c支持中断,并引入关键字_interrupt.但是:
1、ISR不能有返回值;
2、ISR不能传递参数;
3、ISR应该是短而高效的,在ISR中做浮点运算是不明智的;
4、ISR中不应该有重入和性能上的问题,因此不应该使用pintf()函数。