chapter-6-输入输出与中断技术_第1页
chapter-6-输入输出与中断技术_第2页
chapter-6-输入输出与中断技术_第3页
chapter-6-输入输出与中断技术_第4页
chapter-6-输入输出与中断技术_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理与嵌入式系统基础西安邮电学院----计算机系QQ:646938309Email:zql@5/12/20241西安邮电学院计算机学院第6章

输入/输出与中断技术

5/12/20242西安邮电学院计算机学院第6章目录6.1计算机接口概述6.2输入输出接口电路6.3CPU与外设的数据传输控制方式6.4ARM中的GPIO6.5中断技术6.6ARM中断系统基础5/12/20243西安邮电学院计算机学院第6章目录6.1计算机接口概述6.2输入输出接口电路6.3CPU与外设的数据传输控制方式6.4ARM中的GPIO6.5中断技术6.6ARM中断系统基础5/12/20244西安邮电学院计算机学院6.1计算机接口概述计算机硬件由控制器、运算器、存储器、输入设备和输出设备等5部分组成。处理器的强大功能必须通过外部设备(简称外设)才能得以呈现。计算机外设在接入到计算机系统时需要接口电路桥接---用于完成主机与物理外设的桥接与控制。在本课程中所研讨的“外设”是指外设接口,注重于工作原理研讨。5/12/20245西安邮电学院计算机学院第6章目录6.1计算机接口概述6.2输入输出接口电路6.3CPU与外设的数据传输控制方式6.4ARM中的GPIO6.5中断技术6.6ARM中断系统基础5/12/20246西安邮电学院计算机学院6.2输入输出接口电路计算机中的输入输出接口电路用于将物理外设连接入计算机系统,在计算机系统中起着物理外设与计算机主机之间桥接、适配作用。5/12/20247西安邮电学院计算机学院6.2.1输入输出接口电路的基本功能与端口分类接口----具有物理连接的含义,物理外设通过接口电路接入到计算机。接口电路----是实现接口的主要组成部分,用于将物理外设桥接到计算机系统总线。从CPU角度看到的外设实质上是外设的接口电路,它是物理外设的抽象,并不一定是具体的物理外设装置,更具有原理代表性。一、基本概念5/12/20248西安邮电学院计算机学院6.2.1输入输出接口电路的基本功能与端口分类状态信息(输入)---用于标示设备的状态情况。数据信息(输入/输出)---要传送的二进制目标数据。控制信息(输出)---控制外设的工作方式与具体操作。对应于上述的三种信息,外设接口电路中的端口寄存器也分为了三类:状态端口(寄存器)、数据端口(寄存器)和控制端口(寄存器)。二、主机与外设接口之间主要交互的三类信息5/12/20249西安邮电学院计算机学院6.2.1输入输出接口电路的基本功能与端口分类

I/O接口的典型结构示意图5/12/202410西安邮电学院计算机学院6.2.2I/O端口的编址

一、基本概念计算机硬件系统中可以含有多个I/O接口,每个I/O接口中又可以含有多个I/O端口(寄存器)。端口寄存器在计算机系统中象存储器单元一样被编址,称之为‘端口地址’,处理器通过端口地址可对各个端口寻址访问,实现对外设的访问控制。5/12/202411西安邮电学院计算机学院6.2.2I/O端口的编址

二、计算机系统中有两种I/O端口编址方式

统一编址方式---I/O端口与内存单元统一编址在一个地址空间。只是分布在不同的地址空间区域。特点,处理器无专用的I/O指令,无专用的I/O访问控制管脚。独立编址方式

---I/O端口与内存单元分别编址在I/O地址空间和内存地址空间。特点,处理器有专用的I/O指令,有专用的I/O访问控制管脚。5/12/202412西安邮电学院计算机学院6.2.2I/O端口的编址

三、接口与端口接口和端口是两个不同的概念。接口---侧重于物理连接;端口---侧重于接口的内部工作方式。接口由若干个端口加上相应的控制电路构成。每个端口都对应与接口电路中的各个工作寄存器。外设通过接口连接入计算机系统,计算机通过端口访问控制外设工作。5/12/202413西安邮电学院计算机学院第6章目录6.1计算机接口概述6.2输入输出接口电路6.3CPU与外设的数据传输控制方式6.4ARM中的GPIO6.5中断技术6.6ARM中断系统基础5/12/202414西安邮电学院计算机学院6.3CPU与外设的数据传输控制方式外设的多样性使外设的属性差异极大,需要不同的数据传送控制方式。处理器与外设之间的数据传送方式主要有:无条件数据访问方式,状态查询方式数据访问方式,中断方式数据访问方式和直接存储器访问(DMA)方式等几种方式。5/12/202415西安邮电学院计算机学院6.3.1无条件数据访问方式

一、问题描述与解决方法如:状态开关(按键)、继电器、数码管、发光二极管等设备,计算机可随时访问,而不需顾及其当时的状态。无条件外设---输入设备总是准备好向CPU提供数据,输出设备总是准备好接收CPU送来的数据。

CPU对此类外设进行输入/输出操作时无需考虑外设的状态,直接读/写数据端口即可。这一类I/O设备的访问控制最简单。5/12/202416西安邮电学院计算机学院6.3.1无条件数据访问方式

二、接口电路的主要功能任何设备都不能长期占用系统总线;输入设备要经过三态缓冲器相连到系统总线;输出设备要经过数据锁存器相连到系统总线;小思考:处理器的数据总线仅传送操作数,这个说法对吗?答:不对!处理器运行的指令码也是通过数据总线从内存加载到CPU!5/12/202417西安邮电学院计算机学院6.3.1无条件数据访问方式

三、接口电路的基本组成原理(输入三态隔离)5/12/202418西安邮电学院计算机学院6.3.1无条件数据访问方式

三、接口电路的基本组成原理(输出数据锁存)5/12/202419西安邮电学院计算机学院6.3.2状态查询数据访问方式

一、问题描述与解决方法有一些外设,处理器在对其进行访问时需要关心其状态,只有状态许可时方可对外设进行访问。如:AD转换器、串行通信、打印机等,这类外设称之为---条件访问外设。

CPU对此类外设进行输入/输出操作时需考虑外设的状态,只有外设处于‘准备好’状态时,方可访问数据端口。5/12/202420西安邮电学院计算机学院6.3.2状态查询数据访问方式

一、问题描述与解决方法状态查询方式的原理:在执行数据端口访问指令前,要先查询该设备的状态,当设备处于准备好状态时,CPU才执行对设备数据端口的输入/输出指令,与外设交换信息;否则,等待。5/12/202421西安邮电学院计算机学院6.3.2状态查询数据访问方式

二、状态查询式I/O接口电路组成原理5/12/202422西安邮电学院计算机学院6.3.2状态查询数据访问方式

三、状态程序查询方式I/O控制流程分析:外设速度比较慢,高速的CPU被迫查询、停等;CPU的运算能力被浪费。改进思路:将CPU查询、停等改为由外设主动上报状态。5/12/202423西安邮电学院计算机学院6.3.3中断方式数据访问

一、基本思路

当外设需要与CPU进行信息交换时,由外设主动向CPU发出数据传送请求信号(中断申请),CPU响应此请求信号后(中断响应),暂停正在执行的程序,转去执行该外设的数据输入/输出操作程序(中断服务程序----ISR),外设数据端口访问后,CPU再继续执行被暂停的程序(中断返回)。备注:慢速的外设与高速的CPU并行工作,充分发挥CPU的处理能力。5/12/202424西安邮电学院计算机学院6.3.3中断方式数据访问

二、中断方式I/O接口原理5/12/202425西安邮电学院计算机学院第6章目录6.1计算机接口概述6.2输入输出接口电路6.3CPU与外设的数据传输控制方式6.4ARM中的GPIO6.5中断技术6.6ARM中断系统基础5/12/202426西安邮电学院计算机学院6.4ARM中的GPIO6.4.1概述

GPIO(GeneralPurposeInput/Outputports---通用输入/输出端口)是ARM系列芯片中的基本资源,用于二值化数据(数字电路的‘0/1’)的输入和输出。测取输入GPIO管脚的‘高/低’电平状态;在输出GPIO管脚上输出‘高/低’电平。5/12/202427西安邮电学院计算机学院6.4.1概述ARM芯片GPIO管脚的输入/输出应用5/12/202428西安邮电学院计算机学院6.4.1概述

ARM芯片的GPIO引脚可分别设置为输入属性或输出属性。

GPIO用于将外部装置连接到计算机系统。设置为输入属性的GPIO对输入的高低电平数据起着选通、隔离的作用。设置为输出属性的GPIO对输出数据起着锁存的作用。5/12/202429西安邮电学院计算机学院6.4.1概述

LPC2000系列ARM芯片的GPIO资源:在芯片复位后,所有GPIO口默认为输入状态。以端口(32bit字)为单位,对GPIO端口进行访问;可以独立控制每位GPIO口的方向属性(输入或输出);可以独立控制每输出位GPIO口的输出状态(1/0);不同系列的芯片具有不同数量的GPIO5/12/202430西安邮电学院计算机学院6.4.2GPIO原理及端口寄存器说明对于编程者而言,计算机中的各种资源都可被抽象成“寄存器”组;LPC2000系列芯片的每个GPIO组件可抽象为5个32位的寄存器:

PINSELx、IOxDIR、IOxSET、IOxCLR和IOxPIN

ARM芯片GPIO资源概述:5/12/202431西安邮电学院计算机学院6.4.2GPIO原理及端口寄存器说明GPIO寄存器模型原理:5/12/202432西安邮电学院计算机学院6.4.2GPIO原理及端口寄存器说明GPIO相关寄存器说明:序号寄存器名称说明访问属性复位默认值1PINSELx管脚功能选择寄存器;R/W0x002IOxDIR输入/输出方向选择寄存器;R/W0x003IOxSET输出‘1’控制寄存器;写‘1’0x004IOxCLR输出‘0’控制寄存器;写‘1’0x005IOxPIN管脚状态输入寄存器;RNA5/12/202433西安邮电学院计算机学院6.4.2GPIO原理及端口寄存器说明GPIO相关寄存器说明:1、PINSELx

:用于编码选择对应管脚的功能;32bit寄存器,每2bit为一组,用于控制(选择)对应引脚的功能,00---GPIO功能;复位默认值:0x00000000;备注:详见7.3小节《管脚链接模块》。5/12/202434西安邮电学院计算机学院6.4.2GPIO原理及端口寄存器说明GPIO相关寄存器说明:2、IOxDIR

:设置GPIO管脚输入/输出属性;32bit寄存器,每1bit为一组,用于控制(选择)对应引脚的输入、输出属性;‘1’---输出,‘0’---输入;复位默认值:0x00000000;5/12/202435西安邮电学院计算机学院6.4.2GPIO原理及端口寄存器说明GPIO相关寄存器说明:3、IOxSET

:输出高电平(‘1’)控制寄存器;32bit寄存器,每1bit为一组,用于控制(选择)对应引脚的输出高电平;当管脚设置为GPIO功能、输出属性时,向本寄存器某些‘位’写‘1’,对应的管脚将输出‘高电平’;该寄存器写‘0’无效;复位默认值:0x00000000;5/12/202436西安邮电学院计算机学院6.4.2GPIO原理及端口寄存器说明GPIO相关寄存器说明:4、IOxCLR

:输出低电平(‘0’)控制寄存器;32bit寄存器,每1bit为一组,用于控制(选择)对应引脚的输出低电平;当管脚设置为GPIO功能、输出属性时,向本寄存器某些‘位’写‘1’,对应的管脚将输出‘低电平’;该寄存器写‘0’无效;复位默认值:0x00000000;5/12/202437西安邮电学院计算机学院6.4.2GPIO原理及端口寄存器说明GPIO相关寄存器说明:5、IOxPIN

:输出低电平(‘0’)控制寄存器;32bit寄存器,只读;当管脚设置为GPIO功能、输入属性时,每1bit对应反映相应引脚的电平高低状态(1/0);5/12/202438西安邮电学院计算机学院6.4.2GPIO原理及端口寄存器说明LPC2000系列器件GPIO资源:端口号(Px)不同芯片所具有的GPIO口LPC2114/2124LPC2131/2132/2134/2136/2138LPC2220/2210/2212/2214P0P0.0~P0.25、P0.27~P0.30P0.0~p0.23、P0.24~p0.31P0.0~P0.25、P0.27~P0.30P1P1.16~P1.31P1.16~P1.31P1.0~p1.1、P1.16~P1.31P2NoNoP2.0~P2.31P3NoNoP3.0~P3.31最多可用GPIO引脚数量46471125/12/202439西安邮电学院计算机学院6.4.3GPIO应用举例要求:两个按键K1、K2分别用于控制发光二极管LED和蜂鸣器Beep;有K1键按下,则LED点亮,K2键按下则Beep鸣响,反之熄灭、静音。GPIO资源分配表序号引脚属性用途1P0.0InK1按键2P0.1InK2按键3P0.7OutBeep,‘1’鸣4P0.8OutLED,‘1’亮5/12/202440西安邮电学院计算机学院6.4.3GPIO应用举例硬件原理图5/12/202441西安邮电学院计算机学院6.4.3GPIO应用举例----代码清单#defineK11<<0//K1按键连接与P0.0管脚,K1按下时P0.0为低电平#defineK21<<1//K2按键连接与P0.1管脚,K2按下时P0.1为低电平#defineBEEP 1<<7 //P0.7控制蜂鸣器,高电平蜂鸣#defineLED 1<<8 //P0.8控制发光二级管,高电平点亮/***************************************************************函数名称:DelayNS()**函数功能:可变参数软件延时**入口参数:dly

延时参数,值越大,延时越久**出口参数:无*************************************************************/voidDelayNS(uint32dly){ uint32i; for(;dly>0;dly--) for(i=0;i<50000;i++);}5/12/202442西安邮电学院计算机学院6.4.3GPIO应用举例----代码清单/***************************************************************函数名称:main()**函数功能:有K1键按下,则LED点亮,K2键按下则Beep鸣响,**反之熄灭、静音。*************************************************************/intmain(void){PINSEL0=0x00000000;//P0[15:0]管脚用做GPIO功能

IO0DIR=IO0DIR&(~K1); //设置K1控制口为输入

IO0DIR=IO0DIR&(~K2);//设置K2控制口为输入

IO0DIR=IO0DIR|BEEP;//设置BEEP控制口为输出

IO0DIR=IO0DIR|LED; //设置LED控制口为输出

IO0CLR=IO0CLR|BEEP|LED;//BEEP、LED输出低电平5/12/202443西安邮电学院计算机学院6.4.3GPIO应用举例----代码清单while(1){if((IO0PIN&K1)==0) IO0SET=LED; //如果K1按下,LED点亮

else IO0CLR=LED; //松开则熄灭

if((IO0PIN&K2)==0) IO0SET=BEEP; //如果K2按下,蜂鸣器鸣叫

else IO0CLR=BEEP; //松开则静音

DelayNS(50); //延时50个时间单位

}return0;}5/12/202444西安邮电学院计算机学院6.4.5ARM中的GPIO应用小节ARM器件编程注意事项:1、深入研讨相关寄存器的功用,理解其底层原理;2、对于寄存器“写”操作,要求使用:“读—修改—写”方式完成。目的:寄存器的写操作,不要影响其它位的数据。GPIO应用编程注意事项:1、IOxDIR、IOxSET、IOxCLR和IOxPIN只有在PINSELx选择为GPIO功能时有效;2、IOxSET、IOxCLR只有在IOxDIR选择为输出时有意义。5/12/202445西安邮电学院计算机学院第6章目录6.1计算机接口概述6.2输入输出接口电路6.3CPU与外设的数据传输控制方式6.4ARM中的GPIO6.5中断技术6.6ARM中断系统基础5/12/202446西安邮电学院计算机学院6.5中断技术日常生活中的例子:读书---接听电话---接待来访6.5.1基本概念5/12/202447西安邮电学院计算机学院计算机中的中断

----在CPU执行程序过程中,一些急迫事件(中断申请),引起CPU暂停正在执行的程序,转去执行该事件的特定处理程序(中断服务程序---ISR),执行完毕后,CPU再返回到被暂停的程序继续执行。6.5.1基本概念5/12/202448西安邮电学院计算机学院IO操作----高速的CPU访问慢速的外设;实时处理----导弹飞行控制等;程序运行中的出错处理----除数为0,存储器访问异常等;操作系统功能调用;6.5.1基本概念----计算机中断的基本应用5/12/202449西安邮电学院计算机学院6.5.1基本概念----中断技术常用术语:中断源----需要CPU处理的事件源;中断申请----中断源向CPU方向发出的请求处理信号;断点----主程序被打断处的指针;中断服务程序(ISR)----中断事件的功能服务程序;中断响应----CPU敏感并进入到ISR的一系列动作;中断返回----CPU返回被中断主程序断点处继续执行主程序的一系列动作;5/12/202450西安邮电学院计算机学院6.5.1基本概念----中断技术常用术语:中断技术----中断及返回的软、硬件实现技术;中断系统----中断及返回的软、硬件实现电路与代码;中断向量----中断服务程序(ISR)的入口地址;中断现场----CPU响应中断离开主程序时,CPU的相关寄存器数据情况。5/12/202451西安邮电学院计算机学院6.5.1基本概念----计算机中的中断技术应用:引入中断的最初目的是为能更有效地处理系统中的输入输出,提高系统的整体性能;计算机中的大多数设备都支持中断方式数据传送;如:打印机、网卡、显卡、声卡、硬盘光驱等。随着计算机应用的发展,中断技术也不再局限于IO处理。如:出错处理、软中断等。从中断概念的原本含义而言,中断是一个异步的事件。软中断则是程序同步处理,主要应用于编写操作系统。5/12/202452西安邮电学院计算机学院6.5.2中断系统的功能中断技术重要而复杂,由计算机的软硬件共同完成。不同计算机中的中断系统也不尽相同。一般都具备如下基本功能:中断源的分别屏蔽控制----户可以通过软件分别地控制各个中断源可否申请中断;中断源优先级的设置与管理----户可以通过软件分别地安排各中断源的优先级;优先级排队电路协助将当前最高优先级的中断申请送向处理器。备注:中断系统优先级有两层含义:①中断事件同时发生时,CPU相应谁;②CPU正在执行ISR过程中,又有中断事件,CPU如何处理。5/12/202453西安邮电学院计算机学院6.5.2中断系统的功能中断源的分别屏蔽控制----原理示意图5/12/202454西安邮电学院计算机学院6.5.2中断系统的功能中断源优先级的设置与管理----原理示意图5/12/202455西安邮电学院计算机学院6.5.2中断系统的功能中断向量的设置与传递----中断系统在向CPU发出中断请求的同时,将对应的ISR入口地址相关信息发送CPU;断点与现场保护----为保障中断服务完成后能正确地返回并继续主程序的运行,CPU在响应中断时,系统要记录下来被中断程序的断点(即主程序中下一条待执行的指令位置)和保护好当时的CPU工作现场。一般包含:PC、PSW和运算数据寄存器等。5/12/202456西安邮电学院计算机学院6.5.3中断处理过程1、中断请求

中断处理过程一般包括以下五个步骤:①中断请求、②中断响应、③断点保护、④中断处理和⑤中断返回。物理事件转换成一个电信号作为事件请求处理的申请(信号形式:高低电平、上下沿)。中断处理过程中,首先要有中断请求(中断申请)。该信号可被屏蔽控制。5/12/202457西安邮电学院计算机学院6.5.3中断处理过程2、中断响应(软件设置,硬件自动工作)CPU敏感并进入到ISR的一系列动作;CPU总是在每条指令执行的最后一个时钟周期检测有无中断请求,若有中断申请则对其进行响应。中断响应的同时,中断系统自动屏蔽控制,以保证中断逻辑的正确性。中断响应还要获得相应的中断向量,找到对应的ISR并运行它。一般有两种方式:①非向量中断方式和②向量中断方式。不同的中断系统,中断响应的具体操作差别较大,基本原理相似。5/12/202458西安邮电学院计算机学院6.5.3中断处理过程3、断点保护(硬件自动工作)保护断点,保障ISR能返回到主程序的断点处继续运行;断点保护----主程序被打断时的PC当前值备份。不同的系统中,保护的方法不一样:x86将PC值入堆栈,ARM将PC值保护到LR。此操作都是由硬件自动完成。PSW----程序状态字的保护;不同的系统中,保护的方法不一样:x86需要软件方式将PSW值入堆栈,ARM中CPSR硬件自动保护到SPSR。5/12/202459西安邮电学院计算机学院6.5.3中断处理过程4、中断处理(软件编程)保护CPU数据现场,事件业务处理,恢复CPU数据现场;CPU数据现场保护----ISR运行中用到的数据寄存器要先保护后使用,以保证返回时主程序的中间结果不被影响;一般通过入堆栈实现,也有些场合通过切换CPU的寄存器组实现;PSW----程序状态字的保护;不同的系统中,保护的方法不一样;事件处理代码完成对应的事件服务功能;恢复CPU数据现场---将保护数据原样恢复。5/12/202460西安邮电学院计算机学院6.5.3中断处理过程5、中断返回(软件编程)执行完ISR后,要返回到原先被中断的主程序的断点处继续运行;断点保护的逆过程,使用之前保护的PC值,重置PC;不同的计算机有不同的中断返回方法;x86使用专用的中断返回指令(reti),ARM则是使用LR的值重置PC。问题:CPU中的PC寄存器的功能?答:CPU中的PC寄存器也称为程序计数器,处理器总是按照PC的指向完成取指、执行,并以此运行程序;PC指向哪里,CPU就运行到哪里;控制了PC就控制了处理器的执行流向。PC是处理器中的一个极重要的工作寄存器。5/12/202461西安邮电学院计算机学院6.5.3中断处理过程---小节5/12/202462西安邮电学院计算机学院第6章目录6.1计算机接口概述6.2输入输出接口电路6.3CPU与外设的数据传输控制方式6.4ARM中的GPIO6.5中断技术6.6ARM中断系统基础5/12/202463西安邮电学院计算机学院6.6ARM中断系统基础

前面我们讲解了中断技术的一般原理,下面我们来看看在ARM微控器中是如何实现中断技术的----ARM中断系统。ARM中断系统功能强,也比较复杂;我们逐步学习。在此,我们仅以外中断为例介绍ARM中断的处理机制。5/12/202464西安邮电学院计算机学院6.6.1ARM中的中断源中断源----需要CPU处理的事件源;ARM系列微控制器为了满足多方面的应用需求,在器件中集成了多种常用资源,它们多支持中断方式服务。常见的中断源有:WDT(看门狗)、Timer(定时计数器)、PWM(脉宽调制器)、UART(通用异步收发器)、I2C(I2C接口)、SPI(SPI接口)、RTC(实时时钟)、A/D(模数转换器)、EINT(外中断)等。用户可以依据自己的资源需要,选取一款性价比较好的器件应用到自己的应用设计中。备注:上述中断源都支持查询方式服务;5/12/202465西安邮电学院计算机学院6.6.2ARM中的向量中断控制器向量中断----即要向CPU发出中断请求,同时还要给出ISR入口相关参数;向量中断控制器(VIC---VectorInterruptController)是中断源与处理器连接的桥梁,是ARM中断系统的主要硬件构成部分。通过对VIC编程可对ARM器件的各个中断源进行中断屏蔽控制、中断优先级控制、中断分类控制、中断向量传递、状态查询等。5/12/202466西安邮电学院计算机学院6.6.2ARM中的向量中断控制器ARM的VIC原理示意图5/12/202467西安邮电学院计算机学院6.6.2ARM中的向量中断控制器ARM技术中的‘中断’和‘异常’:‘中断’和‘异常’是两个不同的概念;ARM技术中,将所有能导致处理器打断程序正常运行的事件都归为异常;例如复位异常。在ARM中包含有7种异常:复位异常、SWI异常(软中断异常)、未定义指令异常、数据中止异常、指令中止异常、IRQ异常和FIQ异常。‘中断’是‘异常’的两个特例(IRQ异常、FIQ异常);在ARM中,所有外设导致的异常都被处理成IRQ或FIQ两种异常之一;5/12/202468西安邮电学院计算机学院6.6.2ARM中的向量中断控制器习惯上将以IRQ异常方式传递、响应的中断称之为“IRQ中断”;以FIQ异常方式传递、响应的中断称之为“FIQ中断”。IRQ中断又根据中断服务程序入口地址的定位方式,被进一步划分为‘向量IRQ中断’和‘非向量IRQ中断’。中断5/12/202469西安邮电学院计算机学院6.6.3ARM的中断响应过程ARM的FIQ中断、IRQ中断是ARM的FIQ和IRQ两种异常的特例,ARM使用对“异常”响应处理的方法响应处理FIQ、IRQ中断。FIQ异常响应的服务入口地址固定为:0x0000001C;IRQ异常响应的服务入口地址固定为:0x00000018;通常系统中仅安排一个FIQ中断源;因此,FIQ异常响应的服务入口地址就是“FIQ_ISR”入口地址;IRQ中断一般要对应多个中断源,IRQ_ISR入口地址处理需要特殊处理;5/12/202470西安邮电学院计算机学院6.6.3ARM的中断响应过程ARM启动代码的异常向量表部分:0x00LDRPC,ResetAddr

;跳转到ResetAddr单元0x04LDRPC,UndefinedAddr

0x08LDRPC,SWI_Addr

0x0CLDRPC,PrefetchAddr

0x10LDRPC,DataAbortAddr

0x14DCD0xb9205f80;用户代码有效性检查码0x18

LDRPC,[PC,#-0xff0]

;PC←(PC)–0xff00x1C

LDRPC,FIQ_Addr

地址

指令

注释备注:修改PC实质上就是跳转。5/12/202471西安邮电学院计算机学院6.6.3ARM的中断响应过程ARM启动代码的异常向量表部分:0x18

LDRPC,[PC,#-0xff0]

;PC←(PC)–0xff00x1C

LDRPC,FIQ_Addr

地址

指令

注释IRQ异常入口指令LDRPC,[PC,#-0xff0]

执行的效果分析:1、这条指令的地址是0x18,执行该指令时PC=0x20;2、执行的结果为PC=[0x20-

0xff0]=[0xfffff030];3、0xfffff030恰是VICVectAddr

寄存器的地址;结论:ARM处理器响应IRQ异常时,固定按VICVectAddr寄存器间接转移!5/12/202472西安邮电学院计算机学院6.6.3ARM的中断响应过程ARM处理器响应IRQ异常时,固定按VICVectAddr寄存器间接转移。在ARM中有一套装置(VIC),它对各中断源进行管理,在申请中断的同时,自动地将该中断源对应的“ISR向量”传送到了VICVectAddr

寄存器。5/12/202473西安邮电学院计算机学院6.6.4ARM的中断返回在处理完中断后,要从ISR返回到主程序断点处继续执行。有两个关键内容:1、断点的精确定位;2、断点处的处理器工作现场;5/12/202474西安邮电学院计算机学院6.6.4ARM的中断返回回忆ARM响应IRQ、FIQ异常的过程:1、断点的精确定位;ARM处理器响应IRQ中断、FIQ中断时,硬件自动完成当前PC值到LR_irq(或LR_fiq)寄存器的备份,CPSR寄存器值到SPSR_irq(或SPSR_fiq)寄存器的备份。需要进行返回调整:PC=LR-#0x04;使用指令:SUBSPC,R14,#4返回主程序。2、断点处的处理器工作现场;(CPSR、R0~R12)5/12/202475西安邮电学院计算机学院6.6.5ARM的外中断ARM系统的外中断资源主要用于其他外部随机事件到系统的引入;当这些事件发生时,外部其他电路将对应的物理事件转换成电信号,处理器能及时响应、处理这些事件。ARM的C是通过管脚(EINTx)输入符合要求的信号而触发的中断。信号方式有4种,用户可编程约定:平/沿信号方式ARM外部中断电平高电平低电平边沿上升沿下降沿5/12/202476西安邮电学院计算机学院6.6.5ARM的外中断----信号方式应用中的注意事项1、边沿有效外中断2、电平有效外中断要注意EINT信号的清除;保证每次中断,响应且仅响应一次。5/12/202477西安邮电学院计算机学院6.6.5ARM的外中断----相关寄存器硬件系统使用5个寄存器-----用于外中断控制。这5个寄存器构成了ARM外中断资源的系统(编程、控制)模型。寄存器名物理地址功能说明PINSEL00xE002C000管脚功能选择寄存器0;(关于“管脚多功能”选用知识参见7.5章节--管脚连接模块)EXTINT0xE01FC140外部中断标志寄存器;EINT管脚上的有效信号对应地置位本寄存器的相关位,指示有某EINT中断申请。EXTWAKE0xE01FC144外部中断唤醒寄存器;(此功能暂不讨论)EXTMODE0xE01FC148外部中断方式寄存器;控制每个管脚的触发信号方式采用“边沿”或“电平”。EXTPOLAR0xE01FC14C外部中断极性寄存器;控制EINT管脚的哪种电平或边沿来产生中断。5/12/202478西安邮电学院计算机学院6.6.5ARM的外中断----相关寄存器EXTINT----外部中断标志寄存器比特EINT[3:0]分别用于标示对应的4个中断输入;当对应的输入端有有效输入信号时,相应的比特置‘1’,通过VIC向处理器申请中断;向EINT[3:0]按位写入‘1’清零对应位。建议“读—修改—写”方式操作EXTINT寄存器;注意:电平方式的EINT;清0时不要影响其它位。5/12/202479西安邮电学院计算机学院6.6.5ARM的外中断----相关寄存器EXTMODE----外部中断方式寄存器EXTMODE[3:0]位分别用来选择对应的EINT3~EINT0脚触发信号方式是电平或边沿。‘1’---沿方式;‘0’---电平方式。建议“读—修改—写”方式操作EXTMOD寄存器;5/12/202480西安邮电学院计算机学院6.6.5ARM的外中断----相关寄存器EXTPOLAR----外部中断极性寄存器EXTPOLAR[3:0]位分别用来选择对应的EINT3~EINT0脚触发信号的极性。‘1’---上升沿/高电平方式;‘0’---下降沿/低电平方式。建议“读—修改—写”方式操作EXTPOLAR寄存器;5/12/202481西安邮电学院计算机学院6.6.5ARM的外中断----应用举例要求:用一个按键模拟一个外中断触发,用蜂鸣器Beep模拟控制状态;每一次外中断事件翻转一次控制状态输出,模拟一个外中断发出、响应和处理过程。设计分析:设置P0.16管脚用作EINT0功能,连接开关Key,信号方式设置为低电平有效;P0.7管脚用作GPIO功能,输出属性连接Beep。5/12/202482西安邮电学院计算机学院6.6.5ARM的外中断----应用举例P0.16管脚用作EINT0,连接开关Key,信号方式设置为低电平有效;P0.7管脚用作GPIO功能,输出属性连接Beep。设计分析5/12/202483西安邮电学院计算机学院6.6.5ARM的外中断----应用举例C代码程序清单

#include"config.h"#defineBEEP1<<7 /*P0.7控制BEEP,低电平蜂鸣*/void__irqIRQ_Eint0(void)/*EINT0_ISR*/{uint32i;i=IO0SET; /*读取当前BEEP的控制值*/if((i&BEEP)==0)IO0SET=BEEP; /*鸣响蜂鸣器*/elseIO0CLR=BEEP; /*停止蜂鸣器*/while((EXTINT&0x01)!=0)/*等待EINT0引脚恢复为高电平*/{EXTINT=0x01; /*清除EINT0中断标志*/}

VICVectAddr=0; /*向量中断结束*/}5/12/202484西安邮电学院计算机学院6.6.5ARM的外中断----应用举例C代码程序清单

intmain(void){PINSEL0=0x00000000;/*设置P0[15:0]为GPIO*/PINSEL1=0x00000001;/*设P0.16为EINT0*/IO0DIR=BEEP; /*设置P0.7为输出,其余输入*/EXTMODE=0x00; /*设置EINT0为电平触发*/EXTPOLAR=0x00; /*极性寄存器---低电平有效*/IO0CLR=BEEP; /*Beep初始态为静音*/

IRQEnable(); /*使能IRQ中断*/

/*打开EINT0中断(使用非向量中断)*/

VICIntSelect=0x00000000;/*设置中断为IRQ中断*/

VICDefVectAddr=(int)IRQ_Eint0;/*装载中断服务程序地址*/EXTINT=0x01; /*清除EINT0中断标志*/

VICIntEnable=1<<0x0e;/*使能EINT0中断*/

while(1);

/*等待中断*/return(0); }5/12/202485西安邮电学院计算机学院6.6.5ARM的外中断----应用举例ASM程序清单

BEEPequ0x80 ;P0.7管脚接BEEP,低电平鸣响

CODE32AREAExample,CODE,READONLYENTRY;中断向量表Reset

LDRPC,ResetAddrLDRPC,UndefinedAddrLDRPC,SWI_AddrLDRPC,PrefetchAddrLDRPC,DataAbortAddrDCD0xb9205f80

LDRPC,[PC,#-0xff0]LDRPC,FIQ_Addr备注:关注蓝色指令行。5/12/202486西安邮电学院计算机学院6.6.5ARM的外中断----应用举例ASM程序清单

;中断向量表文字池ResetAddrDCDResetInitUndefinedAddrDCDUndefinedSWI_AddrDCDSoftwareInterruptPrefetchAddrDCDPrefetchAbortDataAbortAddrDCDDataAbortNouseDCD0IRQ_AddrDCD0FIQ_AddrDCDFIQ_Handler5/12/202487西安邮电学院计算机学院6.6.5ARM的外中断----应用举例ASM程序清单

ResetInit

;设置IRQ中断模式堆栈

msr

CPSR_c,#0xd2

ldrSP,=0x40000500

;设置管理模式堆栈

msr

CPSR_c,#0xd3

ldrSP,=0x40000800

ldrr0,=PINSEL0

movr4,#0x00

strr4,[r0] ;P0[15:0]管脚用作GPIO5/12/202488西安邮电学院计算机学院6.6.5ARM的外中断----应用举例ASM程序清单

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论