



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章第五章 S3C2410的中断系统的中断系统主要内容:主要内容:v5.1 S3C2410的中断源的中断源v5.2 S3C2410的中断处理的中断处理v5.3 中断控制中断控制v5.4 子中断源的中断控制子中断源的中断控制v5.5 中断向量设置中断向量设置v5.6 其它常用寄存器其它常用寄存器v5.7 中断程序编写中需注意问题中断程序编写中需注意问题v5.8 中断实验和中断程序编写中断实验和中断程序编写 5.1 S3C2410的中断源的中断源vS3C2410有有56个中断源。在个中断源。在56个中断源中,个中断源中,有有32个中断源提供中断控制器,其中,外部个中断源提供中断控制器,其中,外部
2、中断中断EINT4EINT7通过通过“或或”的形式提供一的形式提供一个中断源送至中断控制器,个中断源送至中断控制器,EINT8EINT23也通过也通过“或或”的形式提供一个中断源送至中的形式提供一个中断源送至中断控制器。断控制器。 v通过表5-1可以看到这些中断源之间的逻辑关系。5.2 S3C2410的中断处理的中断处理vS3C2410的中断控制逻辑如图的中断控制逻辑如图5-1所示,所示,S3C2410的中断控制可以处理的中断控制可以处理56个中断源的个中断源的中断请求。这些中断源可以是来自片内的中中断请求。这些中断源可以是来自片内的中断,比如断,比如DMA、UART和和I2C等;也可以来自等
3、;也可以来自处理器外部中断输入引脚。在这些中断源中,处理器外部中断输入引脚。在这些中断源中,有如下有如下11个中断源通过分支中断控制器来申个中断源通过分支中断控制器来申请使用中断(与其它中断共用一个中断向请使用中断(与其它中断共用一个中断向量)量)。 vINT_ADC A/D转换中断;转换中断;vINT_TC 触摸屏中断;触摸屏中断;vINT_ERR2 UART2收发错误中断;收发错误中断;vINT_TXD2 UART2发送中断;发送中断;vINT_RXD2 UART2接受中断;接受中断;vINT_ERR1 UART1收发错误中断;收发错误中断;vINT_TXD1 UART1发送中断;发送中断
4、;vINT_RXD1 UART1接受中断;接受中断;vINT_ERR0 UART0收发错误中断;收发错误中断;vINT_TXD0 UART0发送中断;发送中断;vINT_RXD0 UART0接受中断。接受中断。v中断控制逻辑(interrupt controller logic)的任务是在片内和外部中断源组成的多重中断发生时,选择其中一个中断,通过FIQ (快速中断请求)或IRQ(通用中断请求)向CPU内核发出中断请求。v图5-1中,中断源是指给出中断向量的那些中断,子中断源是指与其它中断共用一个中断向量的中断。例如UART0是一个中断源,而TXD0和RXD0就是子中断源。子中断源向CPU申请
5、中断,子中断源挂起寄存器中相应位要置1,如果该子中断没被屏蔽,则该子中断源所归属的总中断源挂起寄存器中相应位也要置1。5.3 中断控制中断控制5.3.1 中断模式(中断模式(INTMOD)寄存器)寄存器vARM920T提供了两种中断模式,即提供了两种中断模式,即FIQ模式模式(快速模式)和(快速模式)和IRQ模式(通用模式)。所模式(通用模式)。所有的中断源在中断请求时都要确定使用那一有的中断源在中断请求时都要确定使用那一种中断模式。中断模式控制寄存器设置如表种中断模式。中断模式控制寄存器设置如表5-2所示,因为复位时各位等于所示,因为复位时各位等于0,如果我们,如果我们采用通用中断,中断模式
6、寄存器可以不用设采用通用中断,中断模式寄存器可以不用设置。置。5.3.2 中断挂起寄存器和中断源挂起中断挂起寄存器和中断源挂起寄存器寄存器vS3C2410有两个中断挂起寄存器:中断挂起寄存器有两个中断挂起寄存器:中断挂起寄存器(INTPND)见表)见表5-3;中断源挂起寄存器;中断源挂起寄存器(SRCPND)见表)见表5-4。当中断源向。当中断源向CPU申请中断申请中断时,时,SRCPND寄存器的相应位被置寄存器的相应位被置1,表明哪一个,表明哪一个中断源向中断源向CPU申请了中断;如果当前没有优先级与申请了中断;如果当前没有优先级与此中断源相等或高于的中断服务在执行,并该中断此中断源相等或高
7、于的中断服务在执行,并该中断没被屏蔽,此中断会被响应,没被屏蔽,此中断会被响应,INTPND相应位会被相应位会被置置1 5.3.3 中断屏蔽寄存器(中断屏蔽寄存器(INTMSK)v当当INTMSK寄存器的屏蔽位为寄存器的屏蔽位为1时,对应的中时,对应的中断被禁止;当断被禁止;当INTMSK寄存器的屏蔽位为寄存器的屏蔽位为0时,时,则相应的中断正常执行,则相应的中断正常执行,INTMSK定义见表定义见表5-5。如果一个中断的屏蔽位为。如果一个中断的屏蔽位为1,则该中断,则该中断请求不被受理请求不被受理5.3.4 中断优先级寄存器中断优先级寄存器 (PRIORITY)v上面已介绍过,上面已介绍过,
8、S3C2410共有共有56个中断源,有个中断源,有32个个中断控制器,外部中断中断控制器,外部中断EXTIN823共用一个中断控共用一个中断控制器,外部中断制器,外部中断EXTIN47共用一个中断控制器,共用一个中断控制器,9个个UART中断分成中断分成3组,共用组,共用3个中断控制器,个中断控制器,ADC和触摸屏共用一个中断控制器。系统对中断优先级和触摸屏共用一个中断控制器。系统对中断优先级实行由中断优先寄存器实行由中断优先寄存器 (PRIORITY) 和和7个中断仲个中断仲裁器组组成的两级控制,这裁器组组成的两级控制,这7个中断仲裁器组由个中断仲裁器组由6个个子中断仲裁器组(子中断仲裁器组
9、(ARBITER0 ARBITER5)和一)和一个主中断仲裁器组个主中断仲裁器组(ARBITER6)组成组成, 每个中断仲裁每个中断仲裁器下面有器下面有46个中断源,这些中断源对应着个中断源,这些中断源对应着REQ0REQ5这这6个优先级。仲裁器具体分组见图个优先级。仲裁器具体分组见图5-2。中断优先寄存器。中断优先寄存器 (PRIORITY)的定义见表的定义见表5-6。v当一个中断源向CPU申请中断时,它首先要在自己所在的子中断仲裁器组进行仲裁比较,如果此中断仲裁器组中没有和它同级别或高于它的中断源向CPU申请中断,则它进入主中断仲裁器组和其他组的优先中断源进行仲裁比较,决定能否向CPU申请
10、中断。图5-2 中断仲裁器分组v表5-6 优先级寄存器设定 v由表由表5-6可以看到,中断优先寄存器可以看到,中断优先寄存器 (PRIORITY)的的20:19位控制中断仲裁器组位控制中断仲裁器组ARB-SEL6的优先级。的优先级。20:19=00,优先级,优先级REQ0-1-2-3-4-5;20:19=01,优先级,优先级REQ0-2-3-4-1-5;v20:19=10,优先级,优先级REQ0-3-4-1-2-5;20:19=11,优先级,优先级0-4-1-2-3-5,其中,其中,REQ0中断优中断优先级总是最高的,先级总是最高的,REQ5中断优先级总是最低的。中断优先级总是最低的。v中断优
11、先寄存器中断优先寄存器 (PRIORITY)的的18:17位控制中位控制中断仲裁器组断仲裁器组ARB-SEL5的优先级,中断优先寄存器的优先级,中断优先寄存器 (PRIORITY)的的16:15位控制中断仲裁器组位控制中断仲裁器组ARB-SEL4的优先级,等等。的优先级,等等。4.4 子中断源的中断控制子中断源的中断控制v上面讲过,有一些中断源和其它中断共用一上面讲过,有一些中断源和其它中断共用一个中断向量,我们称它们为子中断源,个中断向量,我们称它们为子中断源,S3C2410使用子中断源挂起寄存器使用子中断源挂起寄存器(SUBSRCPND)和子中断屏蔽寄存器)和子中断屏蔽寄存器(INTSUB
12、MSK)来对它们中断控制和反馈)来对它们中断控制和反馈工作状态。工作状态。v子中断源挂起寄存器(子中断源挂起寄存器(SUBSRCPND)各位)各位功能如表功能如表5-7所示,子中断屏蔽寄存器所示,子中断屏蔽寄存器(INTSUBMSK)各位功能如表)各位功能如表5-8所示。所示。5.5 中断向量设置中断向量设置v一个中断源的中断向量就是该中断服务函数的入口一个中断源的中断向量就是该中断服务函数的入口地址,在地址,在S3C2410中,所有中断服务函数的入口地中,所有中断服务函数的入口地址都在址都在2410addr.h中定义成函数指针。我们在主程中定义成函数指针。我们在主程序中,只要把我们的中断服务
13、函数的入口地址(函序中,只要把我们的中断服务函数的入口地址(函数名)赋给该指针即可。数名)赋给该指针即可。v2410addr.h中定义的函数指针形式为:中定义的函数指针形式为:pISR_XXX,pISR表示是中断服务函数的指针,后面表示是中断服务函数的指针,后面XXX表示中表示中断源名字。如,断源名字。如,#define pISR_EINT0 (*(unsigned *)(_ISR_STARTADDRESS+0 x20)定义的是外部中定义的是外部中断断0的服务函数的指针。的服务函数的指针。v中断服务函数的名前加关键字中断服务函数的名前加关键字_isr,表明此,表明此函数是中断服务函数,例如函数
14、函数是中断服务函数,例如函数void _irq Uart0_TxInt(void) 是串行通信是串行通信0通道发送中通道发送中断服务函数,断服务函数,void _irq Uart0_RxIntOrErr(void)v是串行通信是串行通信0通道接收字符和接收错误代码中通道接收字符和接收错误代码中断服务函数。做串行通信发送中断实验时:断服务函数。做串行通信发送中断实验时:pISR_UART0=(unsigned)Uart0_TxInt; 做做串行通信接收中断实验时:串行通信接收中断实验时:pISR_UART0 =(unsigned)Uart0_RxIntOrErr。中断服务。中断服务函数声明时名前
15、也要加关键字函数声明时名前也要加关键字_isr。5.6 其它常用寄存器其它常用寄存器v在在S3C2410系统中,外部中断专门有外部中系统中,外部中断专门有外部中断控制寄存器(断控制寄存器(EXTINTN0 EXTINTN2)、)、外部中断屏蔽寄存器(外部中断屏蔽寄存器(EINTMASK)、外部)、外部中断挂起寄存器(中断挂起寄存器(EINTPEND)进行控制)进行控制。1.外部中断控制寄存器外部中断控制寄存器EXTINTNv外部中断控制寄存器主要控制外部中断触发模式,触发模式可以有高电平、低电平、脉冲上升沿、脉冲下降沿和双沿5种方式。具体见表5-95-11。2外部中断屏蔽寄存器外部中断屏蔽寄存
16、器v外部中断屏蔽寄存器(EINTMASK)控制外部中断的允许和禁止。功能见表5-12。3外部中断挂起寄存器外部中断挂起寄存器v外部中断挂起寄存器EINTPEND,表示当前正在响应的中断服务程序是外部中断中哪一个申请的。外部中断挂起寄存器EINTPEND的定义见表5-13。5.7 中断程序编写中需注意问题中断程序编写中需注意问题v1中断初始花中断初始花 一般在系统复位后和中断程序执行结束,要一般在系统复位后和中断程序执行结束,要对中断挂起寄存器初始花,可按如下方法进对中断挂起寄存器初始花,可按如下方法进行,以免写入不正确数据引起错误。行,以免写入不正确数据引起错误。 rSRCPND = rSRC
17、PND; rINTPND = rINTPND; v2头文件中挂起位头文件中挂起位v在头文件在头文件2410addr.h中对中断挂起位和清中断挂起中对中断挂起位和清中断挂起位进行了如下宏定义,我们在使用时只要用挂起位位进行了如下宏定义,我们在使用时只要用挂起位的名即可:的名即可: #define BIT_EINT0 (0 x1)v#define BIT_EINT1 (0 x11)v#define BIT_EINT2 (0 x12)v#define BIT_EINT3 (0 x13)v#define BIT_EINT4_7 (0 x14)v#define BIT_EINT8_23 (0 x15)v
18、#define BIT_WDT (0 x19)v#define BIT_TIMER0 (0 x110)v#define BIT_TIMER1 (0 x111)v#define BIT_TIMER2 (0 x112)v#define BIT_TIMER3 (0 x113)v#define BIT_TIMER4 (0 x114)v#define BIT_UART2 (0 x115)v#define BIT_LCD (0 x116)v#define BIT_DMA0 (0 x117)v#define BIT_DMA1 (0 x118)v#define BIT_DMA2 (0 x119)v#defin
19、e BIT_DMA3 (0 x120)v#define BIT_SDI (0 x121)v#define BIT_SPI0 (0 x122)v#define BIT_UART1 (0 x123)v#define BIT_USBD (0 x125)v#define BIT_USBH (0 x126)v#define BIT_IIC (0 x127)v#define BIT_UART0 (0 x128)v#define BIT_SPI1 (0 x129)v#define BIT_RTC (0 x130)v#define BIT_ADC (0 x131)v#define BIT_ALLMSK (0
20、xffffffff)v#define BIT_SUB_ALLMSK (0 x7ff)v#define BIT_SUB_ADC (0 x110)v#define BIT_SUB_ERR2 (0 x18)v#define BIT_SUB_TXD2 (0 x17)v#define BIT_SUB_RXD2 (0 x16)v#define BIT_SUB_ERR1 (0 x15)v#define BIT_SUB_TXD1 (0 x14)v#define BIT_SUB_RXD1 (0 x13)v#define BIT_SUB_ERR0 (0 x12)v#define BIT_SUB_TXD0 (0 x11)v#define BIT_SUB_RXD0 (0 x10)v#define ClearPending(bit) v rSRCPND = bit;v rINTPND = bit;v rINTPND;v 5.8 中断实验和中断程序编写中断实验和中断程序编写v嵌入式开发基础课程内容是软硬件相结合的,应结嵌入式开发基础课程内容是软硬件相结合的,应结合某种硬件实验系统来学习。如果暂时没有合某种硬件实验系统来学习。如果暂时没有“目标目标机机”支持
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肿瘤患者营养支持治疗
- 2024年成都农业科技职业学院招聘工作人员笔试真题
- 高性能海洋材料应用研究-全面剖析
- 高频信号处理-全面剖析
- 液压与气压传动(第3版)课件:气动执行元件
- 量子计算对法律行业的影响-全面剖析
- 无人机摄影市场分析-全面剖析
- 消费者视角下的企业社会责任-全面剖析
- 跨平台视频编辑工具开发-全面剖析
- 停车场道路清扫与保洁实施措施
- 回收设施布局与优化-深度研究
- 2024年国网浙江省电力有限公司招聘考试真题
- 微专题2 质量守恒定律的应用(解析版)
- 分析化学考试题(附参考答案)
- 森林无人机灭火技术集成-深度研究
- 股份转让协议模板
- 利他思维培训课件
- 2025年北京铁路局集团招聘笔试参考题库含答案解析
- 湖南省长沙市雅礼实验高中-主题班会-把学习变为热爱:内驱力【课件】
- 2025中考物理总复习填空题练习100题(附答案及解析)
- 2025年牛津译林版英语七年级下册全册单元重点知识点与语法汇编
评论
0/150
提交评论