【转载】
中断是CPU处理外部突发事件的一个重要技术。它能使CPU在运行过程中对外部事件发出的中断请求及时地进行处理,处理完成
后又立即返回断点,继续进行CPU原来的工作。引起中断的原因或者说发出中断请求的来源叫做中断源。根据中断源的不同,可以把中断分为硬件中断和软件中断两大类,而硬件中断又可以分为外部中断和内部中断 两类。
外部中断一般是指由计算机外设发出的中断请求,如:键盘中断、打印机中断、定时器中断等。外部中断是可以屏蔽的中断,也就是说,利用中断控制器可以屏蔽这些外部设备 的中断请求。
内部中断是指因硬件出错(如突然掉电、奇偶校验错等)或运算出错(除数为零、运算 溢出、单步中断等)所引起的中断。内部中断是不可屏蔽的中断。
软件中断其实并不是真正的中断,它们只是可被调用执行的一般程序。例如:ROM BIOS中的各种外部设备管理中断服务程序(键盘管理中断、显示器管理中断、打印机管理 中断等,)以及DOS的系统功能调用(INT 21H)等都是软件中断。 CPU为了处理并发的中断请求,规定了中断的优先权,中断优先权由高到低的顺序是: (1)除法错、溢出中断、软件中断 (2)不可屏蔽中断 (3)可屏蔽中断 (4)单步中断。
----
中断触发方式的比较 0
推荐
在前后台系统或者带有OS的系统,中断处理程序是相对比较难的,对系统的性能影响比较大。在带有OS的系统中,中断作为一个异步使剑,还可以引发任务调度。在带有OS的系统中我们经常会关闭中断,而在ISR中我们常常也需要关闭一些中断,关闭中断如果处理得不好,很可能会出现很多想不到的结果,所以处理好中断非常的 关键。
在这里对中断的触发方式进行介绍,不同的触发方式应用场合是不同的。一般中断分为电平触发和沿触发两种方式。
沿触发: 这是很最常见的触发方式,我们可以用数字电路的方法来解释它的特性。沿触发应该应触发器来描述: 输入引脚(当作触发器的CLK) ----> 触发器------> 中断控制器 ,当输入引脚的相应的沿到来时,就会将触发器置1,并触发中断,触发器会一直保持电平1除非在ISR中用一条语句清0,否则会不断的触发中断,这也就是每次触发中断都要清0的原因。当有高优先级的中断运行后退出时,处理器检测到触发器的值为1,所以依然会进入中断服务程序。
电平触发: 有的时候,边沿触发很容易产生毛刺并导致误中断,这时候就要使用电平触发,电平触发是持续触发,可以用数字电路的缓冲器来描述
输入引脚 ----> 缓冲器 ----> 中断控制器 , 缓冲器的作用就是对信号整形,并增加驱动能力,缓冲器输出的数据和输入的数据相同,可以看出输入引脚的电平直接放映到输出引脚,以高电平触发为例,只要输入引脚的电平为高就立即触发中断,当ISR退出时如果电平依然为高则会再次触发中断,这也就是持续触发的来由,所以采用电平触发时必须保证电平的持续时间不能太长,在ISR中可能需要适当的延时操作保证退出时电平为低,或者读出电平值,电平变低时才退出。 在带用 OS的系统中,很多关键的数据或者代码区(临界区)都需要关闭中断,那么它对中断有什么影响呢? 电平触发如果电平的持续时间比较短,很可能在关闭中断后再开中断之前电平已经变低,结果开中断后中断就没有触发,结果是这次中断被漏掉了,所以在带OS的系统中一定不能关闭中断太久,在允许中断嵌套的情况下必须保证高优先级的中断执行时间不能超过电平的持续时间。 综合考虑,电平触发的持续时间不能太短也不能太长,在自己的系统中要仔细地考虑好中断地持续时间。
另外,开关中断也是很讲究的,在我的开发中我就发现一种“ISR优先级翻转现象”,比如我有三个ISR,按照优先级的高低次序一次是 ISR0 ISR1 ISR2,我在ISR3 关闭ISR0的中断(因为共享数据需要互斥),可知ISR3 运行时ISR0不能得到响应,然而ISR1的优先级高于ISR2,所以在支持嵌套的情况下ISR1会打断ISR2的执行,显然这时即使ISR0中断到来也不会得到响应,这也就是我遇到的ISR优先级翻转问题,当然这可能是我编写程序的风格不好,但是分析起来也是很有趣的,类似于任务的优先级翻转。
------
优先级反转(Priority Inversion)
优先级反转是指一个任务等待比它优先级低的任务释放资源而被阻塞,如果这时有中等优先级的就绪任务,阻塞会进一步恶化。优先级继承技术可用来解决优先级反转问题。
Priority inversion arises when a higher-priority task is forced to wait an indefinite period of time for a lower-priority task to complete.
优先级继承(Priority Inheritance)
优先级继承可用来解决优先级反转问题。当优先级反转发生时,优先级较低的任务被暂时地提高它的优先级,使得该任务能尽快执行,释放出优先级较高的任务所需要的资源。
分享到:
相关推荐
以STM32CubeMX为依托,基于HAL库的STM32学习笔记之中断系统与外部中断基础,使用STM32F103ZET6开发板,理解中断系统的基本概念,实现外部中断的使用,并理解不同边沿触发中断的区别。
通过这个基础例程,你可以进一步了解定时器中断的工作原理,为更复杂的嵌入式应用打下坚实的基础。在实际项目中,定时器中断可以用于实现各种功能,如PWM输出、电机控制、信号采样等,是单片机编程中不可或缺的一...
三、中断基础知识 中断是微控制器处理外部事件的一种高效方式。当发生中断事件时,如按键按下、定时器溢出或接收到新的无线数据,微控制器暂停当前任务,保存现场(上下文),然后执行中断服务程序(ISR)。ISR处理...
1. **中断基础概念** - **中断**:中断是一种硬件机制,允许CPU暂停当前任务,响应外部或内部发生的事件,然后在事件处理完成后返回原来的任务。 - **中断向量**:中断发生时,CPU会跳转到中断向量表中的特定地址...
1. STM32中断基础:STM32微控制器基于ARM Cortex-M3内核,该内核支持总共256个中断源,分为内核中断和外部中断。STM32实现了这些中断源中的76个,包含16个内核中断和60个可屏蔽中断,后者具有16级的可编程中断优先级...
1. **中断基础**:在计算机系统中,中断是一种硬件信号,表明硬件设备需要CPU的注意力。当一个设备完成操作或遇到异常情况时,会发送一个中断请求给CPU,CPU暂停当前执行的任务,转而执行中断处理程序,处理完后再...
1. **串口中断基础** 串口中断是微控制器处理串行通信的一种高效方式,当接收到数据或发送完成时,硬件自动触发中断,使CPU能够立即响应,而不是持续轮询。在TMS570LS3137中,串口中断可以分为接收中断(Rx)和发送...
#### 一、MCC18中断基础知识 MCC18是一种基于Microchip公司的MPLAB X IDE环境下的C编译器,主要用于编写针对PIC18系列微控制器的应用程序。在MCC18中实现中断功能是开发复杂应用的基础之一,本文将详细介绍MCC18...
在这个“中断基础-项目开发”主题中,我们将深入探讨如何在Arduino项目中有效地利用中断。 首先,中断允许 Arduino 忽略长时间运行的任务,专注于检测并响应外部事件。例如,如果我们在一个项目中使用按钮,当按钮...
#### 三、中断基础知识 在深入了解STM32的中断处理之前,首先需要了解一些关于中断的基础概念: 1. **中断**:中断是指当CPU正在执行某个任务时,由于某种原因(如外部硬件设备发出信号)迫使CPU暂时停止当前任务...
通过学习和理解这些中断基础知识,你可以创建更高效、响应更快的Arduino和ESP8266项目,使你的设备能够实时响应外部事件。解压并研究"arduino_esp8266Interrupt"样例,将帮助你深入掌握中断的使用方法。
#### 二、中断基础知识 在深入探讨51单片机的中断函数之前,我们首先需要了解一些关于中断的基本概念。 - **中断**: 是指处理器暂停当前正在执行的程序,转而去执行另一段预先定义好的程序,这段程序被称为中断服务...
### STM8中断基础知识 STM8系列微控制器支持多种中断类型,包括但不限于外部中断、定时器中断、通信接口中断等。中断是处理器在执行正常程序流程时被暂时中断以响应外部或内部事件的过程。STM8通过中断控制寄存器...
### C51单片机外部中断基础知识 #### 1. 外部中断概念 在C51单片机中,外部中断是指由单片机外部信号触发的中断事件。这种中断可以用于实时响应外部事件,提高系统的灵活性和响应速度。 #### 2. 外部中断引脚 C51...
#### 中断基础概念 在微控制器设计中,中断是一种让处理器能够及时响应外部事件的技术。当某个事件发生时(例如定时器溢出、外部引脚的边沿变化等),硬件会自动调用一个特定的中断服务程序来处理这个事件,而无需...
1. **中断基础**: - **中断机制**:中断是处理器响应外部或内部事件的一种机制。当硬件设备(如按键)触发中断时,CPU暂停当前任务,保存上下文,然后执行中断处理程序。 - **中断向量表**:Cortex-A8中,中断向...
总结,CM32M4xxR系列芯片的中断应用指南1提供了一个全面的教程,涵盖了从中断基础到具体配置的各个环节。对于使用该芯片的开发者来说,这份文档是理解和利用中断系统的关键资源,能够有效地帮助他们理解和适应RISC-V...
**中断基础** 中断是一种硬件机制,允许微控制器在执行当前任务时暂停,响应突发事件,然后返回到之前的状态继续执行。在飞思卡尔的K系列MCU中,中断源可能包括定时器溢出、串口接收、按键输入等。每个中断源都有一...
#### 一、中断基础知识 在嵌入式系统开发过程中,中断机制是非常重要的一部分,它使得系统能够响应外部事件,从而实现高效的时间管理和任务调度。Nios II作为Altera(现已被Intel收购)推出的一款软核处理器,广泛...
### 一、51单片机外部中断基础 #### 1.1 外部中断概述 51单片机提供了两个外部中断源(INT0和INT1),它们分别对应于P3.2和P3.3引脚。这些中断可以由外部信号触发,一旦检测到有效的触发信号(上升沿或下降沿),...