收藏 分销(赏)

第六章嵌套向量中断.ppt

上传人:pc****0 文档编号:13963512 上传时间:2026-05-17 格式:PPT 页数:44 大小:1.85MB 下载积分:10 金币
下载 相关
第六章嵌套向量中断.ppt_第1页
第1页 / 共44页
第六章嵌套向量中断.ppt_第2页
第2页 / 共44页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,*,*,嵌套向量中断,中断的概念,CPU正在执行程序时,单片机外部或内部发生的某一,事件,,请求CPU迅速去处理。,CPU暂时中止当前的工作,转到中断服务处理程序处理所发生的事件。,处理完该事件后,再回到原来被中止的地方,继续原来的工作,这称为,中断,。,CPU处理事件的过程,称为CPU的,中断响应过程。,执行主程序,主程序,继续执行主程序,中断请求,中断响应,执行中断处理程序,中断返回,对事件的整个处理过程,称为,中断处理,(,或中断服务,ISR,)。,中断方式,优点,:,大大地,提高了CPU的工作效率。,能够实现中断处理功能的部件称为,中断系统,能实现中断响应、中断处理(服务)、中断返回和中断屏蔽。这是中断系统最基本的功能。,能实现中断优先级管理。即当有多个中断源同时申请中断时,CPU能够优先响应最紧急的中断申请。,能实现中断嵌套。即当CPU正在为优先级较低的中断源服务时,具有较高优先级的中断源提出中断申请,此时中断系统应当允许较高优先级的中断源中断较低优先级的中断源,待较高优先级的中断处理完成后,再接着处理较低优先级的中断。这种中断服务程序再被中断的过程称为中断嵌套。一般的中断系统应能够处理多级中断嵌套,中断系统需要解决的问题:,产生中断的请求源称为,中断请求源,。,常见的中断源有:,一般的I/O设备,如键盘、打印设备。,数据通道中断源,如AD等。,实时时钟。,故障源,中断源向CPU提出的处理请求,称为,中断请求,(或中断申请)。,进入中断保护现场中断处理恢复现场 中断返回,首先,CPU应收到一个可靠的中断请求信号,且该中断请求信号应一直保持到它被响应为止。如果中断请求信号中途撤销,则CPU将不再响应。,其次,在中断请求的同时,没有更高级的请求信号发生。如果它们同时发生,CPU将先处理优先级别较高的请求。,第三,CPU内部应处在开中断(允许中断)状态。,第四,CPU至少要在当前指令执行完成时才可能响应中断。,异常/中断,系统异常是Cortex-M3内核自带的一些异常,比如复位、总线Fault和SysTick等等,外设中断是指制造CPU的厂家加入的,比如串口、定时器中断等等,异常和中断都可以“中断”正常执行的代码流,区别在于,:,异常是Cortex-M3内核产生的“中断”信号,在执行指令或访问存储器时产生的,对Cortex-M3 内核来说是“同步”的,而中断是Cortex-M3内核外部(片上外设或外部中断信号)产生的“中断”信号中断请求信号一般来自内核的外部片上外设或外扩的设备等,对Cortex-M3 内核来说是“异步”的。,NVIC(Nested Vectored Interrupt Controller),Cortex-M3 处理器在内核水平上搭载了一个中断控制器,嵌套向量中断控制器,NVIC 功能,:,1 可嵌套中断支持,所有异常都可被赋予不同的优先级,当前异常的优先级被存储在特殊功能寄存器PSRs的专用字段中,当一个新的异常发生时,硬件会自动进行优先级比较,若发现最新异常的优先级较高,处理器则会中断当前的服务例程(或者是普通程序),而响应新来的异常,即抢占了低优先级异常。,NVIC 功能,2.,向量中断支持,当开始响应一个中断后,Cortex-M3 会自动定位一张向量表,根据中断号从表中找出相应中断的入口地址,然后跳转过去执行,3,.,动态优先级调整支持,优先级在中断运行期间可以通过软件进行修改。在中断服务例程执行完成前,中断是被锁定的,无法进行深度激活,避免了意外重入的风险。,4,.,中断延迟大大缩短,Cortex-M3 为了缩短中断延迟,引入了多个新特性。包括中断现场的自动保护与恢复,,“,咬尾中断,”,和,“,晚到中断,”,机制的支持,5 中断可屏蔽,通过设置BASEPRI、PRIMASK 和FAULTMASK 等寄存器,既可屏蔽优先级低于某个阈值的中断,也可以屏蔽所有中断,保证时间关键的任务能在最后期限前完成。,异常类型,Cortex-M3 在内核水平上搭载了一个异常响应系统,支持11 种系统异常和240 个外部中断输入,如表2.9 所列。其中,编号115 对应的是系统异常,大于等于16 的则全是外部中断。除了个别异常有固定的优先级外,其它异常的优先级都是可编程的。系统异常和外部中断通过不同的寄存器组进行控制。,系统异常是Cortex-M3 内核支持的基本异常,与具体的芯片无关,而外部中断则是与芯片相关的,芯片厂商会根据需要和用途设计中断源数目(1-240)和优先级的位数。LPC1700 系列Cortex-M3 支持35 个外部中断和32 个中断优先级。,异常向量表,当有中断发生并得到响应时,处理器首先将定位其中断服务函数的入口地址,以便进行相应的处理。中断向量即是指中断服务程序的入口地址,在Cortex-M3 中,规定内存储器的最低一部分区域用来存放中断向量(共256 个),称这一片内存区为向量表。缺省情况下,Cortex-M3中的向量表位于Flash 空间的零地址处,表中每个向量占用4 个字节,中断的具体行为,一个中断输入被认为有效后,就会被挂起。即使一段时间后该中断的中断源取消了此次请求,挂起状态仍然会被保存,直到此中断成为系统中最高的优先级时,就会得到处理器的响应,但是,如果挂起中断在得到响应之前,其挂起状态被清除了(通过修改PRIMASK 或FAULTMASK 寄存器),则此次中断请求无效,中断的挂起状态在NVIC 的寄存器中是可写的,用户通过修改相关寄存器可挂起一个中断,也可清除一个中断。,中断的具体行为,当某中断的服务例程开始执行时,就称此中断进入了“活跃”状态,并且其悬起位会被硬件自动清除。在一个中断活跃后,直到其服务例程执行完毕,并且返回(亦称为中断退出)后,才能对该中断的新请求予以响应(单实例)。当然,新请求在得到响应时,亦是由硬件自动清零其悬起标志位。中断服务例程也可以在执行过程中把自己对应的中断重新悬起,中断的具体行为,如果在执行某中断的服务函数期间,中断源一直保持请求信号有效,该中断就会在其服务程序返回后再次被挂起,,同样,若中断在服务例程执行过程中释放了请求,但在服务例程返回前又发出了新的请求信号,则处理器会记住此动作,将再次挂起该中断,中断的具体行为,如果中断在得到响应之前,其请求信号以脉冲的形式出现若干次,则被视为只有一次请求,中断的具体行为,中断源,每一个外围设备可以有一条或几条中断线连接到向量中断控制器。多个中断源也可以共用一条中断线。除过ARM内核指定的某些标准外,哪一条中断线连接到哪一个中断源是无关紧要的或没有优先级的,寄存器,每个外部中断都在NVIC的下列寄存器中,“,挂号,”,:,使能与除能寄存器,挂,起与,“,解,挂,”,寄存器,优先级寄存器,活动状态寄存器,另外,下列寄存器也对中断处理有重大影响,异常掩蔽寄存器(PRIMASK,FAULTMASK以及BASEPRI),向量表偏移量寄存器,软件触发中断寄存器,优先级分组位段,寄存器,寄存器,中断使能设置寄存器,使能中断,决定当前使能的是哪个中断。,该寄存器的一个位对应一个中断(共32 个中断)。置位中断使能设置寄存器的位可以使能相应的中断。,当挂起(pending)中断的使能位置位时,处理器会根据其优先级将其激活。使能位清零时,虽然其中断信号有效,可以将中断挂起,但不管其优先级如何,该中断都不能被激活。因此被禁能的中断可以当作一个被锁存的GPIO 位。用户无需调用中断就可以直接对它进行读取和清零操作。,1=使能中断,0=禁能中断,寄存器,中断使能清除寄存器,禁能中断,决定当前被禁能的中断,该寄存器的一个位对应一个中断(共32 个中断)。置位中断使能清除寄存器的位可以禁能相应的中断。,1=禁能中断,0=使能中断,中断挂起(pend)设置寄存器,将中断强制挂起,决定当前被挂起的中断,该寄存器的一个位对应一个中断(共32 个中断)。置位中断挂起设置寄存器的位可以挂起相应的中断。,写中断挂起设置寄存器操作对已经挂起或已经被禁能的中断没有影响,1=挂起相应的中断,0=不挂起相应的中断,中断挂起清除寄存器,清除挂起中断,决定当前正在挂起哪个中断,该寄存器的一个位对应一个中断(共32 个中断)。置位中断挂起清除寄存器的位可以让相应的挂起中断变为不激活状态。,写中断挂起清除寄存器操作对那些已经激活的中断没有影响,除非这些中断也正处于挂起状态。,外部中断输入,概述,LPC1700,系列,ARM,具有,4,路外部中断,可以设置为,2,种类型:,边沿触发:,上升沿触发,下降沿触发,电平触发:,高电平触发,低电平触发,中断信号,下降沿触发,外部中断输入,边沿触发中断,下降沿触发类型中断的请求和清除时序。,T1,T2,T1,时刻,中断信号有下降沿产生,中断控制器向,CPU,发出中断请求。,1,T2,时刻,,CPU,执行完成中断控制器的中断服务程序,清除中断,中断信号回复到高电平。,2,中断信号,低电平触发,外部中断输入,电平触发中断,低电平触发类型中断的请求和清除时序。,T1,T3,T1,时刻,中断信号开始由高电平转为低电平。,1,T2,时刻,中断控制器确认中断信号是低电平后,将向,CUP,发出中断请求。,2,T2,T3,时刻,,CPU,执行完成中断控制器的中断服务程序,清除中断,中断信号回复到高电平。,3,外部中断源,34,(EINT0),外部中断源,35,(EINT1),外部中断源,36,(EINT2),外部中断源,37,(EINT3),ARM,处理器核,嵌套,向量,中断,控制,器,(,NVIC,),外部中断输入,外部中断源,LPC1700,系列微控制器几乎所有的外设部件都可以产生中断。其中外部中断含有,4,个独立的中断输入。,系统控制模块功能汇总,名称,描述,访问,复位值,EXTINT,外部中断标志寄存器,R/W,0,EXTMODE,外部中断方式寄存器,R/W,0,EXTPOLAR,外部中断极性寄存器,R/W,0,寄存器汇总,外部中断输入,寄存器汇总,可以通过设置,PINSELx,寄存器选择对应引脚为外部中断输入引脚。,1,可以通过设置,EXTPOLAR,和,EXTMODE,确定外部中断的触发信号。,2,可以控制把,CPU,从掉电模式唤醒。,3,有效中断信号设置中断标志。,4,管脚,连接控制,外部中断,极性控制,外部中断,方式控制,中断标志,PINSELx,EXTPOLAR,EXTMODE,EXTINT,CPU,其它部件,1,2,3,外部中断,极性控制,外部中断,方式控制,掉电,唤醒控制,中断标志,EXTPOLAR,EXTMODE,EXTINT,EXTWAKE,管脚,连接控制,PINSELx,CPU,其它部件,寄存器汇总,中断相关寄存器,EXTINT,EINT0,7:4,0,EINT1,1,EINT2,2,EINT3,3,若引脚上出现了符合要求的信号,,EXTINT,寄存器中对应的中断标志将被置位。向该寄存器的,EINT0,EINT3,位写入,1,,可将其清零。,外部中断标志寄存器,(EXTINT),:,注意,:在电平触发方式下,清除中断标志只有在引脚处于无效状态时才可实现。比如设置为低电平中断,则只有在中断引脚恢复为高电平后才能清除中断标志。,设置该寄存器允许相应的外部中断将处理器从掉电模式唤醒。实现掉电唤醒不需要在向量中断控制器(,VIC,)中使能相应的中断。该寄存器的低四位(,EXTWAKE3:0,)分别对应外部中断,3,0,。,外部中断唤醒寄存器,(EXTWAKE),:,控制寄存器,EXTWAKE,EXTWAKE0,7:4,0,EXTWAKE1,1,EXTWAKE2,2,EXTWAKE3,3,外部中断方式控制寄存器,(EXTMODE),:,该寄存器控制着外部中断输入信号的有效触发方式,低四位分别对应外部中断,3,0,。对应位为,0,时,电平触发外部中断;对应位为,1,时,边沿触发外部中断。,控制寄存器,EXTMODE,EXTMODE0,7:4,0,EXTMODE1,1,EXTMODE2,2,EXTMODE3,3,外部中断极性控制寄存器,(EXTPOLAR),:,电平触发方式下:对应位为,0,时,低电平触发外部中断;对应位为,1,时,高电平触发外部中断。边沿触发方式下:对应位为,0,时,下降沿触发外部中断;对应位为,1,时,上升沿触发中断。,控制寄存器,EXTPOLAR,EXTPOLAR0,7:4,0,EXTPOLAR1,1,EXTPOLAR2,2,EXTPOLAR3,3,设置说明,相应位设置值,信号波形,极性控制寄存器,(,EXTPOLAR,),方式控制寄存器,(,EXTMODE,),低电平触发,0,(低),0,(电平),高电平触发,1,(高),0,(电平),下降沿触发,0,(下降),1,(边沿),上升沿触发,1,(上升),1,(边沿),中断信号波形与设置方式,外部中断输入,外部中断的设置,LPC1700,系列,ARM,的电平中断可以设置为,电平中断,和,边沿中断。,当,EXTMODE0=0,时,外部中断,0,设置为电平触发。,当,EXTMODE0=1,时,外部中断,0,设置为边沿触发。,注意:,这里仅以,EINT0,为例来进行讲解,,EINT1EINT3,与之类似,此处不再重复。,低电平,高电平,EINT0,0,EXTMODE0=0,EXTPOLAR0,高电平中断,低电平中断,上升沿中断,下降沿中断,边沿,中断,VIC,外,部,中,断,0,0,1,1,0,1,电平,中断,外部中断输入,外部中断的设置,LPC1700,系列,ARM,的电平中断可以设置为,电平中断,和,边沿中断。,当,EXTMODE0=0,时,外部中断,0,设置为电平触发。,当,EXTMODE0=1,时,外部中断,0,设置为边沿触发。,注意:,这里仅以,EINT0,为例来进行讲解,,EINT1EINT3,与之类似,此处不再重复。,EINT0,0,EXTMODE0=1,EXTPOLAR0,高电平中断,低电平中断,上升沿中断,下降沿中断,电平,中断,VIC,外,部,中,断,0,0,1,1,0,1,下降沿,上升沿,边沿,中断,外部中断输入,电平中断设置,低电平,注意:,这里仅以,EINT0,为例来进行讲解,,EINT1EINT3,与之类似,此处不再重复。,LPC1700,系列,ARM,的电平中断可以设置为,高电平,触发和,低电平,触发。,当,EXTPOLAR0=0,时,外部中断,0,设置为低电平触发。,当,EXTPOLAR0=1,时,外部中断,0,设置为高电平触发。,EINT0,0,EXTMODE0=0,EXTPOLAR0=0,高电平中断,低电平中断,上升沿中断,下降沿中断,电平,中断,边沿,中断,VIC,外,部,中,断,0,0,1,1,0,1,外部中断输入,电平中断设置,EINT0,0,EXTMODE0=0,EXTPOLAR0=1,高电平中断,低电平中断,上升沿中断,下降沿中断,电平,中断,边沿,中断,VIC,外,部,中,断,0,0,1,1,0,1,注意:,这里仅以,EINT0,为例来进行讲解,,EINT1EINT3,与之类似,此处不再重复。,LPC1700,系列,ARM,的电平中断可以设置为,高电平,触发和,低电平,触发。,当,EXTPOLAR0=0,时,外部中断,0,设置为低电平触发。,当,EXTPOLAR0=1,时,外部中断,0,设置为高电平触发。,高电平,外部中断输入,边沿中断设置,EINT0,0,EXTMODE0=1,EXTPOLAR0=0,高电平中断,低电平中断,上升沿中断,下降沿中断,电平,中断,边沿,中断,VIC,外,部,中,断,0,0,1,1,0,1,注意:,这里仅以,EINT0,为例来进行讲解,,EINT1EINT3,与之类似,此处不再重复。,LPC1700,系列,ARM,的边沿中断可以设置为,上升沿,触发和,下降沿,触发。,当,EXTPOLAR0=0,时,外部中断,0,设置为下降沿触发。,当,EXTPOLAR0=1,时,外部中断,0,设置为上升沿触发。,下降沿,外部中断输入,边沿中断设置,EINT0,0,EXTMODE0=0,EXTPOLAR0=1,高电平中断,低电平中断,上升沿中断,下降沿中断,电平,中断,边沿,中断,VIC,外,部,中,断,0,0,1,1,0,1,注意:,这里仅以,EINT0,为例来进行讲解,,EINT1EINT3,与之类似,此处不再重复。,LPC1700,系列,ARM,的边沿中断可以设置为,上升沿,触发和,下降沿,触发。,当,EXTPOLAR0=0,时,外部中断,0,设置为下降沿触发。,当,EXTPOLAR0=1,时,外部中断,0,设置为上升沿触发。,上升沿,外部中断输入,外部中断的设置,中断标志,EXTINT0,EXTINT1,EXTINT2,EXTINT3,触发外部中断,0,触发外部中断,1,触发外部中断,2,触发外部中断,3,外部中断标志寄存器,EXTINT,注意:,外部中断标志写“,1”,清零。,外部中断输入,外部中断应用示例,初始化,EINT0(P2.10),为电平中断:,初始化,EINT0,为下降沿中断:,清除所有外部中断标志:,PINSEL4=(PINSEL4,EXTMODE=EXTMODE,EXTINT=0 x0F;,PINSEL4=(PINSEL4,EXTMODE=EXTMODE|0 x01;,EXTPOLAR=EXTPOLAR,GPIO,中断,|,中断相关寄存器,控制寄存器,状态寄存器,端口,P0,和,P2,引脚还具有中断功能。,GPIO,管脚的中断寄存器可分为两组:控制寄存器和状态寄存器。,没有电平中断,上升沿中断使能寄存器,IO0/2IntEnR,上升沿中断状态寄存器,IO0/2IntStatR,下降沿中断使能寄存器,IO0/2IntEnF,下降沿中断状态寄存器,IO0/2IntStatF,中断标志清零寄存器,IO0/2IntClr,整体中断状态寄存器,IOIntStatus,GPIO,中断,|,中断功能框图,上升沿中断状态寄存器,IO0/2IntStatF,P0/P2,+,下降沿中断,上升沿中断,IO0/2IntStatR,IOIntStatus,IO0/2IntEnR,IO0/2IntEnF,IO0/2IntClr,上升沿中断使能寄存器,下降沿中断使能寄存器,中断标志清零寄存器,下降沿中断状态寄存器,整体中断状态寄存器,GPIO,中断,|,中断操作流程,IO0/2IntEnF,IO0/2IntEnR,P0/P2,+,IO0/2IntClr,IOIntStatus,IO0/2IntStatF,IO0/2IntStatR,设置中断触发模式,1,等待中断,IOIntStatus,IO0/2IntStatF,IO0/2IntStatR,清除中断标志,2,设置下降沿中断使能,下降沿中断,上升沿中断,GPIO,中断,|,中断操作流程,操作示例,设置,P0.0,下降沿中断,PINSEL0 ,PINMODE0,IO0IntEnF|=0 x01,;,ISER0|=(1 21),;,zyIrqEnable();,void GPIO_ISR(void),if(IO0IntStatF&0 x01)!=0),IO0IntClr =0 x01;,.,设置引脚连接模块,设置下降沿中断,判断是否为,P0.0,下降沿中断,清除中断标志,用户其它代码,使能,GPIO,中断,打开全局中断,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服