第44章中断控制器功能及应用开发课件

上传人:沈*** 文档编号:241639283 上传时间:2024-07-12 格式:PPTX 页数:40 大小:462.21KB
返回 下载 相关 举报
第44章中断控制器功能及应用开发课件_第1页
第1页 / 共40页
第44章中断控制器功能及应用开发课件_第2页
第2页 / 共40页
第44章中断控制器功能及应用开发课件_第3页
第3页 / 共40页
点击查看更多>>
资源描述
6.3 S3C44B0 x 中断控制器功中断控制器功能及应用开发能及应用开发CPU与外设之间传输数据的控制方式通常有3种:v中断方式vDMA模式提纲vS3C44B0X 中断概述 vS3C44B0X 中断源 vS3C44B0X 中断控制器的操作vS3C44B0X的中断原理 v特殊功能寄存器 v中断控制器应用编程 中断控制器中断控制器(INTERRUPT CONTROLLER)INTERRUPT CONTROLLER)概述概述1、支持支持30个中断源,包括个中断源,包括8个外部中断源个外部中断源EINT0-7EINT0-72、中断控制器支持中断控制器支持26个中断信号,其中外部中断个中断信号,其中外部中断4/5/6/7复用到一复用到一个中断信号上个中断信号上,UART0,UART0和和UART1UART1的错误中断也是或的关系。的错误中断也是或的关系。3、每个中断信号处理均可独立设置成每个中断信号处理均可独立设置成FIQ或者或者IRQ模式模式4、中断信号处理均可采用中断信号处理均可采用矢量处理方法矢量处理方法(vector interrupt mode)或者或者非矢量处理方法非矢量处理方法5、支持中断优先级排队支持中断优先级排队中断源中断源向量地址描述EINT00 x00000020外部中断0EINT10 x00000024外部中断1EINT20 x00000028外部中断2EINT30 x0000002c外部中断3EINT4/5/6/70 x00000030外部中断4/5/6/7INT_TICK0 x00000034RTC时间滴答中断INT_ZDMA00 x00000038通用DMA中断0INT_ZDMA10 x00000040通用DMA中断1INT_BDMA00 x00000044桥梁DMA中断0INT_BDMA10 x00000048桥梁DMA中断1INT_WDT0 x0000004c看门狗定时器中断INT_UERR0/10 x00000050UART错误中断0/1INT_TIMER00 x00000054定时器0中断INT_TIMER10 x00000060定时器1中断INT_TIMER20 x00000064定时器2中断INT_TIMER30 x00000068定时器3中断INT_TIMER40 x0000006c定时器4中断INT_TIMER50 x00000070定时器5中断INT_URXD00 x00000080UART接收中断0INT_URXD10 x00000084UART接收中断1INT_IIC0 x00000088IIC中断INT_SIO0 x0000008cSIO中断INT_UTXD00 x00000090UART发送中断0INT_UTXD10 x00000094UART发送中断1INT_RTC0 x000000a0RTC告警中断INT_ADC0 x000000c0ADC EOC中断异常向量表 b ResetHandler/*for debug */b HandlerUndef /*handlerUndef */b HandlerSWI /*SWI interrupt handler*/b HandlerPabort /*handlerPAbort */b HandlerDabort /*handlerDAbort */b./*handlerReserved */b HandlerIRQ/0 x18地址 b HandlerFIQ/0 x1c地址S3C44B0 x 中断控制原理中断控制原理v中断控制器任务:在片内外围和外部中断源组成的多重中断中断控制器任务:在片内外围和外部中断源组成的多重中断发生时,经过优先级判断选择其中一个中断,通过发生时,经过优先级判断选择其中一个中断,通过FIQIRQ向向ARM7TDMI内核发出中断请求内核发出中断请求之后在执行之后在执行0 x18处的程处的程序时具体跳到相应的中断处理程序去执行序时具体跳到相应的中断处理程序去执行S3c44b0 x中断控制器中断控制器30个中断源个中断源ARM7TDMIIRQFIQ非矢量中断处理方式非矢量中断处理方式 非矢量中断处理模式是一种传统的中断处理方法。非矢量中断处理模式是一种传统的中断处理方法。当系统接收到中断信号时,会将当系统接收到中断信号时,会将中断挂起中断挂起寄存器中对应中断的寄存器中对应中断的标志位置位,然后跳转到位于标志位置位,然后跳转到位于0 x18处的统一中断处理函数中,该统处的统一中断处理函数中,该统一程序中通过读取一程序中通过读取中断挂起中断挂起寄存器来判断中断源,并根据优先级关寄存器来判断中断源,并根据优先级关系再跳转到对应中断源的处理代码中去执行。系再跳转到对应中断源的处理代码中去执行。缺点:中断反应时间长缺点:中断反应时间长 软件程序实现具体中断的跳转软件程序实现具体中断的跳转非矢量中断处理方式非矢量中断处理方式矢量中断处理方式矢量中断处理方式 矢量中断处理模式是当矢量中断处理模式是当CPU读取位于读取位于0 x18处的处的IRQ中断处理指中断处理指令时候;令时候;系统自动执行由系统自动执行由0 x18地址地址到各到各中断源向量地址的跳转指令中断源向量地址的跳转指令;通过跳转指令,系统就直接跳转到对应的中断处理函数中;通过跳转指令,系统就直接跳转到对应的中断处理函数中;优点:优点:节省了中断处理时间,提高了中断处理速度。节省了中断处理时间,提高了中断处理速度。硬件实现具体中断的跳转硬件实现具体中断的跳转矢量中断处理方式矢量中断处理方式中断向量地址v例如,例如,ADC中断的矢量地址为中断的矢量地址为0 xC0,则在,则在0 xC0处放置以下代码:处放置以下代码:vldr pc,=HandlerADC v当当ADC中断产生的时候,系统会自动调转到中断产生的时候,系统会自动调转到HandlerADC函数代码中。函数代码中。ENTRY:b ResetHandler b HandlerUndef b HandlerSWI b HandlerPabort b HandlerDabort b.subs pc,lr,#4 subs pc,lr,#4VECTOR_BRANCH:ldr pc,=HandlerEINT0 ldr pc,=HandlerEINT1 ldr pc,=HandlerEINT2 ldr pc,=HandlerEINT3 ldr pc,=HandlerEINT4567 ldr pc,=HandlerTICK ldr pc,=HandlerZDMA0 ldr pc,=HandlerZDMA1 ldr pc,=HandlerBDMA0 ldr pc,=HandlerBDMA1 ldr pc,=HandlerWDT ldr pc,=HandlerUERR01 b.b.ldr pc,=HandlerTIMER0 ldr pc,=HandlerTIMER1 ldr pc,=HandlerTIMER2 ldr pc,=HandlerTIMER3 ldr pc,=HandlerTIMER4 ldr pc,=HandlerTIMER5 b.b.ldr pc,=HandlerURXD0 ldr pc,=HandlerURXD1 ldr pc,=HandlerIIC ldr pc,=HandlerSIO ldr pc,=HandlerUTXD0 ldr pc,=HandlerUTXD1 b.b.ldr pc,=HandlerRTC ldr pc,=HandlerADC中断优先级中断源向量地址描述EINT00 x00000020外部中断0EINT10 x00000024外部中断1EINT20 x00000028外部中断2EINT30 x0000002c外部中断3EINT4/5/6/70 x00000030外部中断4/5/6/7INT_TICK0 x00000030RTC时间滴答中断INT_ZDMA00 x00000034通用DMA中断0INT_ZDMA10 x00000040通用DMA中断1INT_BDMA00 x00000044桥梁DMA中断0INT_BDMA10 x00000048桥梁DMA中断1INT_WDT0 x0000004c看门狗定时器中断INT_UERR0/10 x00000050UART错误中断0/1INT_TIMER00 x00000054定时器0中断INT_TIMER10 x00000060定时器1中断INT_TIMER20 x00000064定时器2中断INT_TIMER30 x00000068定时器3中断INT_TIMER40 x0000006c定时器4中断INT_TIMER50 x00000070定时器5中断INT_URXD00 x00000080UART接收中断0INT_URXD10 x00000084UART接收中断1INT_IIC0 x00000088IIC中断INT_SIO0 x0000008cSIO中断INT_UTXD00 x00000090UART发送中断0INT_UTXD10 x00000094UART发送中断1INT_RTC0 x000000a0RTC告警中断INT_ADC0 x000000c0ADC EOC中断高高低低S3C444B0X 中断控制器的操作 程序状态寄存器的程序状态寄存器的F位和位和I位位 中断模式(中断模式(INTMOD):IRQ、FIQ两种两种 中断挂起寄存器(中断挂起寄存器(INTPND):):只读,标志该中断源发送了中断请求只读,标志该中断源发送了中断请求 中断屏蔽寄存器(中断屏蔽寄存器(INTMSK)置置1,表示该中断被屏蔽,不予处理表示该中断被屏蔽,不予处理 置置0,表示该中断正常执行表示该中断正常执行N ZC V.IFT M4M3M2M1M0M4:00b100000b100010b100100b10011模式用户FIQIRQ管理0b101110b11011中止未定义0b11111系统模式位工作状态位1:Thumb0:ARMFIQ中断禁止位1:禁止0:允许IRQ中断禁止位1:禁止0:允许OverflowCarryZeroNegative图2-5 程序状态寄存器条件码标志位条件码标志位保留位保留位控制位控制位特殊功能寄存器v中断控制寄存器(INTCON)v中断挂起寄存器(INTPND)v中断模式寄存器(INTMOD)v中断屏蔽寄存器(INTMSK)vIRQ中断服务挂起寄存器(I_ISPR)vIRQ/FIQ中断挂起清零寄存器(I_ISPC/F_ISPC)中断控制寄存器(中断控制寄存器(INTCON)中断控制寄存器INTCON地址:0 x01E00000R/W 初始值x7位位名称描述3保留2V该位允许IRQ使用向量模式0矢量中断模式1非矢量中断模式1I该位允许IRQ中断。0允许IRQ中断1保留0F该位允许FIQ中断0允许FIQ中断(FIQ中断不支持矢量中断模式)1保留。注:在使用FIQ中断之前该位必须清除中断模式寄存器(中断模式寄存器(INTMOD)中断模式寄存器INTMOD地址:0 x01E00008R/W初始值:0 x0000000位位名称位位名称描述25EINT012INT_TIMER10IRQ模式模式1FIQ模式模式24EINT111INT_TIMER223EINT210INT_TIMER322EINT39INT_TIMER421EINT4/5/6/78INT_TIMER520INT_TICK7INT_URXD019INT_ZDMA06INT_URXD118INT_ZDMA15INT_IIC17INT_BDMA04INT_SIO16INT_BDMA13INT_UTXD015INT_WDT2INT_UTXD114INT_UERR0/11INT_RTC13INT_TIMER00INT_ADC中断挂起寄存器(中断挂起寄存器(INTPND)中断挂起寄存器INTPND地址:0 x01E00004R/W指示中断请求状态初始值0 x0000000位位名称位位名称描述25EINT012INT_TIMER10无请 求1请求24EINT111INT_TIMER223EINT210INT_TIMER322EINT39INT_TIMER421EINT4/5/6/78INT_TIMER520INT_TICK7INT_URXD019INT_ZDMA06INT_URXD118INT_ZDMA15INT_IIC17INT_BDMA04INT_SIO16INT_BDMA13INT_UTXD015INT_WDT2INT_UTXD114INT_UERR0/11INT_RTC13INT_TIMER00INT_ADC中断屏蔽寄存器(中断屏蔽寄存器(INTMSK)中断屏蔽寄存器INTMSK地址:0 x01E0000CR/W初始值:0 x07ffffff位位名称位位名称描述26Global12INT_TIMER10服服务允允许1屏蔽屏蔽25EINT011INT_TIMER224EINT110INT_TIMER323EINT29INT_TIMER422EINT38INT_TIMER521EINT4/5/6/77INT_URXD020INT_TICK6INT_URXD119INT_ZDMA05INT_IIC18INT_ZDMA14INT_SIO17INT_BDMA03INT_UTXD016INT_BDMA12INT_UTXD115INT_WDT1INT_RTC14INT_UERR0/10INT_ADC13INT_TIMER027ReservedIRQ中断服务挂起寄存器中断服务挂起寄存器(I_ISPR)位名称位位名称位描述初始值EINT025INT_TIMER1120=不响应1=正在响应初始值:0使用说明:1.同一时间只有当前中断请求中优先级最高的中断被置位2.读该寄存器,可判断那个中断正在被服务EINT124INT_TIMER211EINT223INT_TIMER310EINT322INT_TIMER49EINT4/5/6/721INT_TIMER58INT_TICK20INT_URXD07INT_ZDMA019INT_URXD16INT_ZDMA118INT_IIC5INT_BDMA017INT_SIO4INT_BDMA116INT_UTXD03INT_WDT15INT_UTXD12INT_UERR0/114INT_RTC1INT_TIMER013INT_ADC 0IRQ/FIQ中断挂起清零寄存器(I_ISPC/F_ISPC)位名称位位名称位描述初始值EINT025INT_TIMER1120=不变1=清除该中断挂起位初始值:0用用处:在ISR中写该寄存器可清 INTPND中的相应位,以使CPU不再响应该中断EINT124INT_TIMER211EINT223INT_TIMER310EINT322INT_TIMER49EINT4/5/6/721INT_TIMER58INT_TICK20INT_URXD07INT_ZDMA019INT_URXD16INT_ZDMA118INT_IIC5INT_BDMA017INT_SIO4INT_BDMA116INT_UTXD03INT_WDT15INT_UTXD12INT_UERR0/114INT_RTC1INT_TIMER013INT_ADC0外部中断控制寄存器(外部中断控制寄存器(EXTINT)外部中断控制寄存器EXTINT 0 x01D20050 R/W 外部中断控制寄存器 初始值0 x000000位位名称描述30:28EINT7000=低低电平触平触发001=高高电平中断平中断01x=下降沿触下降沿触发10 x=上升沿触上升沿触发11x=双双边沿触沿触发26:24EINT622:20EINT518:16EINT414:12EINT310:8EINT26:4EINT12:0EINT0设置信号触发方式,及触发信号的极性选择设置信号触发方式,及触发信号的极性选择外部中断挂起寄存器(外部中断挂起寄存器(EXTINTPND)外部中断挂起寄存器EXTINTPND地址:0 x01D20054R/W 初始值:0 x00位位名称描述3EXTINTPND3如果EINT7激活,EXINTPND3设置为1,INTPND21也设置为12EXTINTPND2如果EINT6激活,EXINTPND2设置为1,INTPND21也设置为11EXTINTPND1如果EINT5激活,EXINTPND1设置为1,INTPND21也设置为10EXTINTPND0如果EINT4激活,EXINTPND0设置为1,INTPND21也设置为1作用:作用:1.用于区分用于区分EINT4567到底那个中断发生了到底那个中断发生了2.通过写该寄存器可清除相应的通过写该寄存器可清除相应的EINT4567中断中断使用:使用:1.在中断初始化程序中写该寄存器清除外部中断在中断初始化程序中写该寄存器清除外部中断2.在中断处理程序中先写在中断处理程序中先写EXTINTPND清除外部中断,清除外部中断,后写后写 I_ISPC清清INTPND寄存器。寄存器。3.在中断处理程序中读在中断处理程序中读EXTINTPND,用于判断是那个中断发生了用于判断是那个中断发生了.端口上拉寄存器(端口上拉寄存器(PUPC-G)当端口配置为输入功能时,上拉寄存器控制着每一个端口组的上拉寄存器的使能端。当相应的位被设为0时,使能引脚接上拉电阻;当相应的位为1时,不使能引脚接上拉电阻。中断实验电路上位电阻使能上位电阻使能中断控制器应用编程按键中断实例中断控制器应用编程v中断初始化程序v中断服务程序中断程序包括:v按下SB2,SB3产生中断vEXINT6中断产生,LED1亮;EXINT7中断产生,LED2亮。按键中断:void Main(void)sys_init();/*Initial 44B0X*/while(1)init_Eint();#define BIT_GLOBAL(0 x126)#define BIT_EINT4567(0 x121)中断特殊功能寄存器配置中断特殊功能寄存器配置 INTCON INTMOD INTMSK I_ISPC(清除挂起位清除挂起位)外部中断控制寄存器配置外部中断控制寄存器配置 EXTINT EXTINTPND(清除挂起位清除挂起位)PortG寄存器配置寄存器配置 PCONG PUPG注册中断处理程序注册中断处理程序 pISR_EINT4567=(int)Eint4567Isr;中断初始化程序涉及到中断初始化程序涉及到:#define pISR_EINT4567(*(unsigned*)(_ISR_STARTADDRESS+0 x74)void init_Eint(void)/*enable interrupt*/rI_ISPC =0 x3ffffff;/清除清除INTPND中的挂起位中的挂起位 rEXTINTPND=0 xf;/清除清除EXTINTPND reg rEXTINT=rEXTINT|0 x22222222;/EINT1、EINT4567 下降沿触发下降沿触发 rINTMOD =0 x0;/IRQ模式模式 rINTCON=0 x5;/非向量中断模式,使能非向量中断模式,使能IRQ/*设置中断处理程序函数设置中断处理程序函数*/pISR_EINT4567=(int)Eint4567Isr;/*PORT G 配置端口功能配置端口功能*/rPCONG =0 xffff;/功能为功能为EINT70 rPUPG =0 x0;/pull up enable rINTMSK =(BIT_GLOBAL|BIT_EINT4567);/使能使能EINT4567中断中断中断初始化程序中断初始化程序中断服务程序示例中断服务程序示例void Eint4567Isr(void)int which_int =rEXTINTPND;/判断是那个中断源 rEXTINTPND=0 xf;/清除 EXTINTPND reg.rI_ISPC|=BIT_EINT4567;/清除INTPND中的位if(which_int=4)/按下按钮按下按钮SB2,则,则led1亮亮 led1_on();else if(which_int=8)/按下按钮按下按钮SB3,则,则led2亮亮 led2_on();void Eint4567Isr(void)_attribute_(interrupt(IRQ);vinterrupt是一个重要的修饰符。它将函数修饰为中断函数。中断函数的最大特点是返回类型和参数均必须为void。函数经过interrupt修饰后,程序员只写中断服务程序的主体部分,中断服务程序中的保护现场前缀段和恢复现场的后缀段,均由编译程序完成。void Eint4567Isr(void)_attribute_(interrupt(IRQ);p经常不断地学习,你就什么都知道。你知道得越多,你就越有力量pStudyConstantly,AndYouWillKnowEverything.TheMoreYouKnow,TheMorePowerfulYouWillBe写在最后谢谢你的到来学习并没有结束,希望大家继续努力Learning Is Not Over.I Hope You Will Continue To Work Hard演讲人:XXXXXX 时 间:XX年XX月XX日
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!