NVIC与中断控制

NVIC与中断控制

ID:42140723

大小:1.49 MB

页数:43页

时间:2019-09-08

NVIC与中断控制_第1页
NVIC与中断控制_第2页
NVIC与中断控制_第3页
NVIC与中断控制_第4页
NVIC与中断控制_第5页
资源描述:

《NVIC与中断控制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、NVIC与中断控制NVIC概览中断配置基础中断使能与除能中断的悬起与解悬中断建立全过程的演示软件中断再论SysTick定时器NVIC概览正如前文已经多次提到的,向量中断控制器,简称NVIC,是Cortex‐M3不可分离的一部分,它与CM3内核的逻辑紧密耦合,有一部分甚至水乳交融在一起。NVIC与CM3内核同声相应,同气相求,相辅相成,里应外合,共同完成对中断的响应。NVIC的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外,NVIC还包含了MPU的控制寄存器、SysTick定时器以及调试控制。本章中,我

2、们将体检NVIC的中断处理控制逻辑。MPU与调试控制逻辑在后续章节中讨论。NVIC共支持1至240个外部中断输入(通常外部中断写作IRQs)。具体的数值由芯片厂商在设计芯片时决定。此外,NVIC还支持一个“永垂不朽”的不可屏蔽中断(NMI)输入。NMI的实际功能亦由芯片制造商决定。在某些情况下,NMI无法由外部中断源控制。NVIC的访问地址是0xE000_E000。所有NVIC的中断控制/状态寄存器都只能在特权级下访问。不过有一个例外——软件触发中断寄存器可以在用户级下访问以产生软件中断。所有的中断控制/状态寄存器均可按字/半字

3、/字节的方式访问。此外,有几个中断屏蔽寄存器也与中断控制密切相关,它们是第三章中讲到的“特殊功能寄存器”,只能通过MRS/MSR及CPS来访问。中断配置基础每个外部中断都在NVIC的下列寄存器中“挂号”:?使能与除能寄存器?悬起与“解悬”寄存器?优先级寄存器?活动状态寄存器另外,下列寄存器也对中断处理有重大影响?异常掩蔽寄存器(PRIMASK,FAULTMASK以及BASEPRI)?向量表偏移量寄存器?软件触发中断寄存器?优先级分组位段中断的使能与除能中断的使能与除能分别使用各自的寄存器来控制——这与传统的,使用单一比特的两个状

4、态来表达使能与除能是不同的。CM3中可以有240对使能位/除能位,每个中断拥有一对。这240个对子分布在8对32位寄存器中(最后一对没有用完)。欲使能一个中断,你需要写1到对应SETENA的位中;欲除能一个中断,你需要写1到对应的CLRENA位中;如果往它们中写0,不会有任何效果。通过这种方式,使能/除能中断时只需把“当事位”写成1,其它的位可以全部为零。再也不用像以前那样,害怕有些位被写入0而破坏其对应的中断设置(写0没有效果),从而实现每个中断都可以自顾地设置,而互不侵犯——只需单一的写指令,不再需要读‐改‐写。如上所述,S

5、ETENA位和CLRENA位可以有240对,对应的32位寄存器可以有8对,因此使用数字后缀来区分这些寄存器,如SETENA0,SETENA1…SETENA7,如表8.1所示。但是在特定的芯片中,只有该芯片实现的中断,其对应的位才有意义。因此,如果你使用的芯片支持32个中断,则只有SETENA0/CLRENA0才需要使用。SETENA/CLRENA可以按字/半字/字节的方式来访问。又因为前16个异常已经分配给系统异常,故而中断0的异常号是16,(回顾第7章中的表7.2)SETENAs:xE000_E100–0xE000_E11C;

6、CLRENAs:0xE000E180-0xE000_E19C中断的悬起与解悬如果中断发生时,正在处理同级或高优先级异常,或者被掩蔽,则中断不能立即得到响应。此时中断被悬起。中断的悬起状态可以通过“中断设置悬起寄存器(SETPEND)”和“中断悬起清除寄存器(CLRPEND)”来读取,还可以写它们来手工悬起中断。悬起寄存器和“解悬”寄存器也可以有8对,其用法和用量都与前面介绍的使能/除能寄存器完全相同,见表8.2。优先级每个外部中断都有一个对应的优先级寄存器,每个寄存器占用8位,但是允许最少只使用最高3位。4个相临的优先级寄存器拼

7、成一个32位寄存器。如前所述,根据优先级组设置,优先级可以被分为高低两个位段,分别是抢占优先级和亚优先级。优先级寄存器都可以按字节访问,当然也可以按半字/字来访问。有意义的优先级寄存器数目由芯片厂商实现的中断数目决定,优先级配置寄存器的详细信息在附录D中给出(表D.18)活动状态每个外部中断都有一个活动状态位。在处理器执行了其ISR的第一条指令后,它的活动位就被置1,并且直到ISR返回时才硬件清零。由于支持嵌套,允许高优先级异常抢占某个ISR。然而,哪怕一个中断被抢占,其活动状态也依然为1(请仔细琢磨前文讲到的“直到ISR返回时

8、才清零)。活动状态寄存器的定义,与前面讲的使能/除能和悬起/解悬寄存器相同,只是不再成对出现。它们也能按字/半字/字节访问,但他们是只读的,如表8.4所示。PRIMASK与FAULTMASK特殊功能寄存器PRIMASK用于除能在NMI和硬fault之外的所有异常

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。