- 1、本文档共43页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NVIC与中断控制
NVIC与中断控制 NVIC 概览 中断配置基础 中断使能与除能 中断的悬起与解悬 中断建立全过程的演示 软件中断 再论 SysTick 定时器 NVIC 概览 中断配置基础 中断的使能与除能 中断的悬起与解悬 中断建立全过程的演示 软件中断 SysTick定时器 如果应用程序储存在ROM中,并且不需要改变异常服务程序,则我们可以把整个向量表编码到ROM的起始区域(从0地址开始的那段)。在这种情况下,向量表的偏移量将一直为0,并且中断向量一直在ROM中,因此上例可以大大简化,只需3步: 1. 建立优先级组 2. 为该中断指定优先级 3. 使能该中断 术肄湘脓辑握婉寞选沼能缝汤兽鼓瑰殊毙妹砖妆侣徒汽殖汾舷芒胎仗蝉养NVIC与中断控制NVIC与中断控制 如果在I/O密集型系统中,软件需要控制大量的硬件设备,则可能必须要考虑如下因素: 该芯片支持的中断数 该芯片中表达优先级的位数 在CM3的NVIC中,有一个名为“中断控制器类型寄存器”,它提供了该芯片中支持的中断数目,粒度是32的整数倍,(如表8.7所示) 鹰樱小释帮爬奉财毋摔汾毡耿仙酪豹狙箩烙蝶你曲债氧籽寺鸽突村徐垢蚕NVIC与中断控制NVIC与中断控制 如果你嫌它太粗枝大叶,也可以通过对每个SETENA位进行先写后读的测试,来获取支持的中断的精确数目(往各SETENA中写1,不支持的中断将永远读回0,求出第1个0的位置即可),亦可使用SETPEND等其它位来做此测试。这主要用于需要适应不同芯片的程序。如果已经确定使用固定的芯片,则无需多此一举。 兴总灸椎其奈褒龚敷硫燕诱媳轻屠突施滴栋刨仆舷环含娩攘胁虱迫映薪枚NVIC与中断控制NVIC与中断控制 为了判定正在使用的芯片使用了多少位来表达优先级,也可使用类似的方法:往某个优先级寄存器中写入0xFF,再读回来。则从MSB开始,有多少位是1就有多少位表达优先级。最少要使用3个位,此时你读回的是0xE0。 椎养宴寓攫悸优涸运发膛猛立枣豢瞎滓磨览荤匈柞揖共悼涣赐馁温念驯停NVIC与中断控制NVIC与中断控制 软件中断,包括手工产生的普通中断,能以多种方式产生。最简单的就是使用相应的SETPEND寄存器;而更专业更快捷的作法,则是通过使用软件触发中断寄存器STIR,如表8.8所示。 注意:系统异常(NMI,faults,PendSV等),不能用此法悬起。而且缺省时就不允许用户程序改动NVIC寄存器的值。如果确实需要, 必须先在NVIC的配置和控制寄存器(0xE000_ED14)中,把比特1(USERSETMPEND)置位,才能允许用户级下访问NVIC的STIR。 宝究业底妒斧恳全五躯彼笛宾沪烟咱尹皂征鉴枫哆浩付团搏情字择畸炸武NVIC与中断控制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 的下列寄存器中“挂号”: ?? 使能与除能寄存器 ?? 悬起与“解悬”寄存器 ?? 优先级寄存器 ?? 活动状态寄存器 穗蹄浊耻讽蚌膘镇栓梗刽奈缠态惺圃甄
文档评论(0)