第6章 异常和中断处理及其电路实现
- 格式:pptx
- 大小:4.36 MB
- 文档页数:53


单片机的中断与异常处理方法在单片机的工作过程中,中断和异常处理是非常重要的概念和方法。
它们能够有效地提高单片机的响应能力和灵活性,使其能够应对各种不同的工作需求和问题。
本文将介绍单片机中断的概念、中断的种类以及针对不同中断的处理方法,同时也会探讨单片机异常处理的原理和方法。
一、中断的概念和种类中断是指在一个程序执行的过程中,由于某种特殊的事件发生,导致程序的正常执行被打断,转而去执行一个与当前任务无关的子程序,完成该事件的相应处理。
中断可以分为外部中断和内部中断两种。
1. 外部中断外部中断是指当单片机外部引脚的电平或信号发生变化时,引发中断事件,使单片机停止当前任务的执行,去处理由该外部事件引发的中断服务程序(ISR)。
外部中断常用于与外部设备的交互,如按键输入、传感器检测等。
在编程中,我们可以通过设置中断触发条件和编写相应的中断服务程序来实现对外部中断的处理。
2. 内部中断内部中断是指当单片机内部某个特定的事件发生时,由硬件或软件触发中断请求,并且将控制权交给中断服务程序进行相应的处理。
内部中断的发生可以是由于某个特定条件的满足,如定时器溢出中断、串口接收中断等;也可以是由软件的运行结果触发,如除法溢出中断、地址错误中断等。
不同的内部中断需要通过编程实现相应的中断服务程序。
二、中断的处理方法中断处理是指在中断发生时,单片机通过中断向量表找到相应的中断服务程序,并对中断事件进行处理的过程。
下面将介绍两种常用的中断处理方法。
1. 优先级中断处理优先级中断处理是指对多个中断源按照优先级进行划分和处理的方法。
在单片机的中断系统中,每个中断源都被赋予了一个优先级,高优先级的中断可以打断当前正在执行的低优先级中断,从而增加了中断的响应速度和灵活性。
优先级中断处理需要在编程时设置中断的优先级,并根据不同的中断事件编写相应的中断服务程序。
2. 嵌套中断处理嵌套中断处理是指当一个中断正在执行的过程中,又发生了另一个中断时,将当前中断挂起,转而处理新发生的中断,并在处理完毕后返回原中断继续执行的方法。
ARM异常中断处理概述1、中断的概念中断是一个过程,是CPU在执行当前程序的过程中因硬件或软件的原因插入了另一段程序运行的过程。
因硬件原因引起的中断过程的出现是不可预测的,即随机的,而软中断是事先安排的。
2、中断源的概念我们把可以引起中断的信号源称之为中断源。
3、中断优先级的概念ARM处理器中有7种类型的异常,按优先级从高到低的排列如下:复位异常(Reset)、数据异常(Data Abort )、快速中断异常(FIQ)、外部中断异常(IRQ)、预取异常(PrefetchAbort )、软件中断(SWI)和未定义指令异常(Undefined instruction )ARM体系异常种类当异常发生时,处理器会把PC设置为一个特定的存储器地址。
这一地址放在被称为向量表(vector table )的特定地址范围内。
向量表的入口是一些跳转指令,跳转到专门处理某个异常或中断的子程序。
当异常产生时,ARM core:拷贝CPSR 至U SPSR_vmode>设置适当的CPSR位:改变处理器状态进入ARM状态改变处理器模式进入相应的异常模式设置中断禁止位禁止相应中断(如果需要)保存返回地址到LR_vmode>设置PC为相应的异常向量返回时,异常处理需要:从SPSR_vmode:恢复CPSR从LR_vmode>恢复PCNote:这些操作只能在ARM态执行.当异常发生时,分组寄存器r14和SPSR用于保存处理器状态,操作伪指令如下。
R14_<excepti on _mode> = retur n linkSPSR_<exception_mode> = CPSRCPSR[4: 0] = exception mode numberCPSR[5] = 0 /* 进入ARM 状态*/If <excepti on _mode> = = reset or FIQ the nCPSR[6] = 1 /*屏蔽快速中断FIQ*/CPSR[7] = 1 /*屏蔽外部中断IRQ*/PC = excepti on vector address异常返回时,SPSF内容恢复到CPSR 连接寄存器r14的内容恢复到程序计数器PCo注:cortex-A8系统中支持通过设置CP15的c12寄存器将异常向量表的首地址设置在任意地址。
重学计算机组成原理(十二)-异常和中断1 概览完好的程序都满足以下特征•自动运行我们的程序和指令都是一条条顺序执行,不需要通过键盘或者网络给这个程序任何输入•正常运行没有遇到计算溢出之类的程序错误。
不过,现实的软件世界可没有这么简单•程序不仅是简单的执行指令,更多的还需要和外部的输入输出打交道•程序在执行过程中,还会遇到各种异常情况,比如除以0、溢出,甚至我们自己也可以让程序抛出异常。
遇到这些情况,计算机是怎么运转的呢,也就是说,计算机究竟是如何处理异常的2 异常:硬件、系统和应用的组合拳2.1 软件还是硬件异常?一提到异常(Exception),可能你的第一反应就是Java中的Exception。
不过我们今天讲的,并不是这些软件开发过程中遇到的“软件异常” 而是和硬件、系统相关的“硬件异常”。
当然,“软件异常”和“硬件异常”并不是业界使用的专有名词,只是我为了方便给你说明,和Java中软件抛出的Exception进行的人为区分,你明白这个意思就好。
尽管,这里我把这些硬件和系统相关的异常,叫作“硬件异常”。
但是,实际上,这些异常,既有来自硬件的,也有来自软件层面的。
比如,我们在•硬件层面当加法器进行两个数相加的时候,会遇到算术溢出或者,你在玩游戏的时候,按下键盘发送了一个信号给到CPU,CPU要去执行一个现有流程之外的指令,这也是一个“异常”同样,来自•软件层面比如我们的程序进行系统调用,发起一个读文件的请求。
这样应用程序向系统调用发起请求的情况,一样是通过“异常”来实现的。
2.2 异常的一生异常, 其实是一个硬件和软件组合到一起的处理过程。
•异常的前半生异常的发生和捕捉,在硬件层面完成•异常的后半生异常的处理,其实是由软件来完成的!2.3 异常代码计算机会为每一种可能会发生的异常,分配一个异常代码(Exception Number) 异常代码也叫作中断向量(Interrupt Vector)。