码迷,mamicode.com
首页 > 其他好文 > 详细

中断服务函数的编写要求

时间:2017-09-19 16:16:45      阅读:344      评论:0      收藏:0      [点我收藏+]

标签:ble   重要   art   传递参数   bsp   需要   返回   family   16px   

中断是嵌入式系统中重要的组成部分,但是在标准C中不包含中断。许多编译开发商在标准C上增加了对中断的支持,提供新的关键字用于标示中断服务程序 (ISR),类似于__interrupt、#program interrupt等。当一个函数被定义为ISR的时候,编译器会自动为该函数增加中断服务程序所需要的中断现场入栈和出栈代码

例:

_interrupt double compute_area(double radius)

{   

  double area=PI*radius*radius;

  printf("%f\n", area);

  return area;

}

  中断服务程序需要满足如下要求:
  (1)不能返回值;
  (2)不能向ISR传递参数;
  (3) ISR应该尽可能的短小精悍;
  (4) printf(char * lpFormatString,…)函数会带来重入和性能问题,不能在ISR中采用

  (5)在许多处理器、编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额外的寄存器入栈,有些处理器/编译器就不允许ISR 中做浮点运算。此外,ISR 应该是短而有效率的,在ISR 中做浮点运算是不明智的

 

参考 : http://blog.csdn.net/maochengtao/article/details/40373039

 

中断服务函数的编写要求

标签:ble   重要   art   传递参数   bsp   需要   返回   family   16px   

原文地址:http://www.cnblogs.com/Deanboy/p/7552273.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!