中断服务程序(Interrupt Service Routines,ISR)注意事项
中断是嵌入式系统中重要组成部分,很多编译器开发商都让标准c支持中断,并引入关键字_interrupt.但是:
1、ISR不能有返回值;
2、ISR不能传递参数;
3、ISR应该是短而高效的,在ISR中做浮点运算是不明智的;
4、ISR中不应该有重入和性能上的问题,因此不应该使用pintf()函数。
裸奔的系统:硬件中断响应程序的运行插入时机是随机的,程序中不存在这样的调用语句:“value=interrupter( )”, 所以,即使有返回值也不知返回给谁。 同理,如果中断函数有形参,但因没有调用者,也就没有实参对形参赋值。所以,不可能有参数传递。裸奔系统中,中断程序由硬件触发执行。这意味着中断函数没有具体的调用者,所以,中断函数无法将值返回给任何对象。
非裸奔系统:操作系统需要进行各种调度安排,所以接管了中断的入、出口;另外,还增加了许多软件中断。这些中断函数的运行插入时机已经不再是随机了。一个中断申请发生后,其运行时机取决于操作系统的确定安排和调用。也就是说,有了调用者,所以可以有返回值和参数传递。
中断服务程序(Interrupt Service Routines,ISR)注意事项的更多相关文章
- Reentrant protected mode kernel using virtual 8086 mode interrupt service routines
		
A method for allowing a protected mode kernel to service, in virtual 8086 mode, hardware interrupts ...
 - Intel 80x86 Linux Kernel Interrupt(中断)、Interrupt Priority、Interrupt nesting、Prohibit Things Whthin CPU In The Interrupt Off State
		
目录 . 引言 . Linux 中断的概念 . 中断处理流程 . Linux 中断相关的源代码分析 . Linux 硬件中断 . Linux 软中断 . 中断优先级 . CPU在关中断状态下编程要注意 ...
 - Bran的内核开发教程(bkerndev)-08 中断服务程序(ISR)
		
中断服务程序(ISR) 中断服务程序(ISR)用于保存当前处理器的状态, 并在调用内核的C级中断处理程序之前正确设置内核模式所需的段寄存器.而工作只需要15到20行汇编代码来处理, 包括调用C中的 ...
 - 中断服务程序不用interrupt关键字也可实现中断,该关键字是否必须?
		
2013-06-20 11:13:35 中断服务程序不用interrupt关键字也可实现中断,该关键字是否必须? 使用tools->pin connect,将INT5与pin.txt关联,模拟外 ...
 - linux下avr单片机开发:中断服务程序
		
不管是什么单片机程序,中断总是非常重要的一部分 ,linux 下的avr开发,主要是依靠avr-gcc,以及avr-libc,它们对中断程序的格式要求,与window下的icc-avr以及win-av ...
 - c语言单片机中断服务程序
		
#include <reg52.h> #define uchar unsigned char #define uint unsigned int uint count; void dela ...
 - Linux中断(interrupt)子系统
		
Linux中断(interrupt)子系统之一:中断系统基本原理 Linux中断(interrupt)子系统之二:arch相关的硬件封装层 Linux中断(interrupt)子系统之三:中断流控处理 ...
 - emwin之在中断服务程序中创建窗口的结果
		
@2019-04-28 [小记] 使用emwin设计器生成的程序,将该窗口创建放在中断服务程序中出现奇怪现象,非死机但功能间歇性异常,将创建窗口程序放于普通程序中则工作正常
 - FreeRTOS不允许在中断服务程序和临界段中执行不确定的性的操作
		
举例 等待事件标志组的任务,要是在中断服务程序中设置事件标志组,但不知道当前有多少个任务在等待此事件标志,这个操作即为不确定性操作,为了不在中断服务程序中执行此不确定性操作,只在中断服务程序中给一确定 ...
 
随机推荐
- 3d max地形建造
			
这里来记录一下max里面建造一个地形. 1.创建一个平面,调节平面的属性,包括长宽,和分段 2.然后建造一个道路 然后选择样条线工具,调节线条的轮廓. 3.使用合并工具,将线条和地面进行合并成为一个物 ...
 - T-SQL基础 (存储过程,触发器|| 笔记0808)
			
一:存储过程 1.使用EXEC 调用存储过程 2.系统存储过程是以SP_开头,SP_ProcedureName.:例子:EXEC sp_columns TableName 查看列信息 扩展存储过程 ...
 - Eclipse中绑定java源代码
			
如何在Eclipse sdk中查看jar源代码如:*.jar 1.点 “window”-> "Preferences" -> "Java" -&g ...
 - Sidebar Enhancements使用说明
			
SideBarEnhancements是Sublime侧栏文件与文件夹的增强工具 Version: 2015.5.27 通过使用Sumbime Text3安装包工具(Package Control,快 ...
 - WKWebView详解
			
WKWebView是在Apple的WWDC 2014随iOS 8和OS X 10.10出来的,是为了解决UIWebView加载速度慢.占用内存大的问题.使用UIWebView加载网页的时候,我们会发现 ...
 - O-C-11-利用类方法做一个简单的计算器
			
#import <Foundation/Foundation.h> @interface calculator : NSObject //@property double numb ...
 - 九度OJ 1086 最小花费--动态规划
			
题目地址:http://ac.jobdu.com/problem.php?pid=1086 题目描述: 在某条线路上有N个火车站,有三种距离的路程,L1,L2,L3,对应的价格为C1,C2,C3.其对 ...
 - 一次ora-1113 记录
			
记录博客园的第一天,今天在电脑前发呆,突然感觉自己记忆越来越差,近年来随着工作力度的加强,感觉自己越来越力不从心,问题重复的出现.感觉自己应该去记录点什么了,随选择了用写博客的方式记录一下.第一天先记 ...
 - input表单
			
submit:点击submit按钮表单就会被提交给服务器,中文IE下默认按钮文本为“提交查询”,可以设置value属性修改按钮的显示文本 text:size属性为宽度,value为值,maxlengt ...
 - 欢迎使用skymvc框架,简单易用的php框架
			
skymvc是一款轻量.简单易用的php mvc框架,经过多个项目实践改良. 特点: 1.mvc架构 2.m.v.c之间可以互相调用 3.简单的路由控制 R("/index.php" ...