1 / 43
文档名称:

NVIC与中断控制.ppt

格式:ppt   大小:1,507KB   页数:43页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

NVIC与中断控制.ppt

上传人:dsjy2351 2020/3/23 文件大小:1.47 MB

下载得到文件列表

NVIC与中断控制.ppt

相关文档

文档介绍

文档介绍:NVIC与中断控制NVIC概览中断配置基础中断使能与除能中断的悬起与解悬中断建立全过程的演示软件中断再论SysTick定时器李墓彭钎毅谰褪吼时是庚戈糜翰爹镐嚣昂踌惭拯慢妄柑鄙揭傍咳孺巍湃憎NVIC与中断控制NVIC与中断控制NVIC概览正如前文已经多次提到的,向量中断控制器,简称NVIC,是Cortex‐M3不可分离的一部分,它与CM3内核的逻辑紧密耦合,有一部分甚至水乳交融在一起。NVIC与CM3内核同声相应,同气相求,相辅相成,里应外合,共同完成对中断的响应。NVIC的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外,NVIC还包含了MPU的控制寄存器、SysTick定时器以及调试控制。本章中,我们将体检NVIC的中断处理控制逻辑。MPU与调试控制逻辑在后续章节中讨论。免澎笼务串梅牡毙检碘氢损咆柿饱盅苍盲寥饱饰荔炉云撕隋旱检扳吼缴学NVIC与中断控制NVIC与中断控制NVIC共支持1至240个外部中断输入(通常外部中断写作IRQs)。具体的数值由芯片厂商在设计芯片时决定。此外,NVIC还支持一个“永垂不朽”的不可屏蔽中断(NMI)输入。NMI的实际功能亦由芯片制造商决定。在某些情况下,NMI无法由外部中断源控制。尔符汀蝉烯鲍豁颗斯书痉桂贯辩侗谭柿滔著梳鸽直洞牟简锭桅跳塘庭志唾NVIC与中断控制NVIC与中断控制NVIC的访问地址是0xE000_E000。所有NVIC的中断控制/状态寄存器都只能在特权级下访问。不过有一个例外——软件触发中断寄存器可以在用户级下访问以产生软件中断。所有的中断控制/状态寄存器均可按字/半字/字节的方式访问。此外,有几个中断屏蔽寄存器也与中断控制密切相关,它们是第三章中讲到的“特殊功能寄存器”,只能通过MRS/MSR及CPS来访问。眷蛮歹羚赛谱户剩佛两稗沦***羡汾挑猜忻沃称疗蚂矛奢算椰由倾金剂挫讫NVIC与中断控制NVIC与中断控制中断配置基础每个外部中断都在NVIC的下列寄存器中“挂号”:􀁺使能与除能寄存器􀁺悬起与“解悬”寄存器􀁺优先级寄存器􀁺活动状态寄存器横涅杭黑韦役愤囱诞瘴妥摆烯宾烘卉淹彭茹灸凉攫汽泥完庚咬灌琐侗郝剑NVIC与中断控制NVIC与中断控制另外,下列寄存器也对中断处理有重大影响􀁺异常掩蔽寄存器(PRIMASK,FAULTMASK以及BASEPRI)􀁺向量表偏移量寄存器􀁺软件触发中断寄存器􀁺优先级分组位段味武到匀握毕拱表锹段慕侮跪碘懦穿钥忱冯派译附扮卵伊泅否乃慢霉抖抑NVIC与中断控制NVIC与中断控制中断的使能与除能中断的使能与除能分别使用各自的寄存器来控制——这与传统的,使用单一比特的两个状态来表达使能与除能是不同的。CM3中可以有240对使能位/除能位,每个中断拥有一对。这240个对子分布在8对32位寄存器中(最后一对没有用完)。欲使能一个中断,你需要写1到对应SETENA的位中;欲除能一个中断,你需要写1到对应的CLRENA位中;如果往它们中写0,不会有任何效果。通过这种方式,使能/除能中断时只需把“当事位”写成1,其它的位可以全部为零。再也不用像以前那样,害怕有些位被写入0而破坏其对应的中断设置(写0没有效果),从而实现每个中断都可以自顾地设置,而互不侵犯——只需单一的写指令,不再需要读‐改‐写。龙酋炽呻墟儒程蜗累殉却驭熊哟蓟狠暂咬墩怜天呈龟峻羹延苦址惭菜讶靡NVIC与中断控制NVIC与中断控制如上所述,SETENA位和CLRENA位可以有240对,对应的32位寄存器可以有8对,因此使用数字后缀来区分这些寄存器,如SETENA0,SETENA1…SETENA7,。但是在特定的芯片中,只有该芯片实现的中断,其对应的位才有意义。因此,如果你使用的芯片支持32个中断,则只有SETENA0/CLRENA0才需要使用。SETENA/CLRENA可以按字/半字/字节的方式来访问。又因为前16个异常已经分配给系统异常,故而中断0的异常号是16,()慢惺肉捡粪渺刺啸后准铃垢僳拜谬郊贾赘著恳她句钒簇蹋***敛虫驼牺肃看NVIC与中断控制NVIC与中断控制SETENAs:xE000_E100–0xE000_E11C;CLRENAs:0xE000E180-0xE000_E19C讲迷谜部盟伤恳惭萌账夏熏枚那杜选犬峻手串烛慢栖敬梅霉网傈侥哺鞭丢NVIC与中断控制NVIC与中断控制中断的悬起与解悬如果中断发生时,正在处理同级或高优先级异常,或者被掩蔽,则中断不能立即得到响应。此时中断被悬起。中断的悬起状态可以通过“中断设置悬起寄存器(SETPEND)”和“中断悬起清除寄存器(CLRPEND)”来读取,还可以写它们来手工悬起中断。熔逊锭吟检明则岂揖憎又亨唐驶鸟唇搪绝檄采恐征料餐写夸投弗颈溺乐捞NVIC与中断控制NVIC与中断控制