zoukankan      html  css  js  c++  java
  • 中断服务函数的编写要求

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

    例:

    _interrupt double compute_area(double radius)

    {   

      double area=PI*radius*radius;

      printf("%f ", 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

  • 相关阅读:
    串口调试助手
    自己动手编写俄罗斯方块
    ASP.NET Core log4net
    ASP.NET Core读取配置文件
    ASP.NETCore3 MVC
    ASP.NETCore2C#7.0新语法
    ASP.NETCore1C#6.0新语法
    C#加密解密
    前端通用的滚动条样式
    C# 106 短信发送
  • 原文地址:https://www.cnblogs.com/Deanboy/p/7552273.html
Copyright © 2011-2022 走看看