网站大量收购独家精品文档,联系QQ:2885784924

K60芯片NVIC模块中断相关寄存器配置以及应用举例.pdf

K60芯片NVIC模块中断相关寄存器配置以及应用举例.pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
K60芯片NVIC模块中断相关寄存器配置以及应用举例

飞思卡尔 Kinetis芯片中 NVIC模块的中断寄存器的介绍及其应用举例 喻宁宁 IMM 现场应用工程师 飞思卡尔半导体 一、NVIC 模块的中断寄存器简介 嵌套式向量中断控制器(NVIC)是 Cortex内核不可分割的一部分,它与 CPU紧密结 合,可对系统异常和外设中断进行控制。如图 1所示,NVIC右端连接到各个外围模块, 负责对外设中断进行处理;左端连接到内核,负责对内核系统异常进行处理。本文重点介 绍 NVIC对外围模块的中断控制。通常,在配置某个外围模块的中断功能时,除了需要设 置此模块本身的寄存器中的中断使能位外,还需要配置 NVIC模块中对应的中断控制寄存 器,系统才会响应此外围模块的中断请求。 图 1 NVIC的连接框图 ARM Cotex-M4的 NVIC模块中相关寄存器的地址、名称、功能描述如图 2所示,它 们可分为两种类型:非优先级中断寄存器(non-IPR register)和优先级中断寄存器(IPR register)。其中,非优先级中断寄存器有以下几种: NVICISERx:中断使能设置寄存器; NVICICERx:中断使能清除寄存器; NVICISPRx:中断挂起设置寄存器; NVICICPRx:中断挂起清除寄存器; NVICIABRx;中断激活状态寄存器; 其中 x为 0 - 7,称为寄存器的组号,表示每种寄存器都有 8个。这些寄存器都是 32位 的。因此,如果每一位控制一个中断源,则可以分别控制 256个中断源。通常, NVICISERx(中断使能设置寄存器)用于去使能某个中断,而 NVICICPRx(中断挂起清 除寄存器)用于配合 NVICISERx寄存器来使能这个中断;NVICIABRx(中断激活状态寄 存器)为只读寄存器,用于判断某个中断是否处于激活的状态。 图 2 NVIC寄存器描述 而优先级中断寄存器只有一种: NVICIPRx,用于设定每个中断源的优先级。从图 3 可以看到,每个中断源的优先级控制字要占用 4位,再加上保留位,则每个 32位的寄存 器可以配置 4个中断源的优先级。因此,如果要配置 256个中断源的优先级,则需要 256 ÷ 4 = 64个 32位的寄存器。但是 Kinetis系列 MCU的中断源一般都没有这么多,也就不需 要这么多的寄存器。 图 3 中断优先级控制寄存器位域分布 下面以 K60为例进行具体说明。K60支持 16级中断控制,所以在 NVIC中,对应于不 同的中断源,在优先级中断寄存器 NVICIPRx中都有 4个相应的位来控制其优先级,另外 还有 4位是保留位,如图 3所示。 从图 2可以看出,每种非优先级中断寄存器都是一个包含 8个 32位寄存器的寄存器组。 那么在应用过程中,对应于 K60的 90多种不同的中断源,应该配置这些寄存器组中的哪 一个寄存器(组号)和该 32位寄存器的那一位(位号)呢?简单来说,就是组号和位号 的确定。例如 NVICICER2[21],它的组号就是 2,位号就是 21。这就需要借助芯片厂商在 CPU中为不同中断源定义的中断请求号 IRQ。需要特别注意的是,中断向量号和中断请求 号 IRQ号不同,中断请求号 IRQ = 中断向量号-16,因为有 16个 ARM内核中断请求是没 有分配 IRQ号的。在 K60的 Reference Manual 的 P74页可以看到 CPU中断向量分配表, 定义了各种不同的中断源所对应的中断入口地址、中断向量号、中断请求号、寄存器号以 及彼此之间的关系,如图 4所示。 图 4 LPTMR中断向量的分配 这里结合 K60的中断向量分配表,以 LPTMR(低功耗定时器)模块为例介绍一下 NVIC寄存器的配置。LPTMR模块的中断向量分配如图 4所示,可以看到 LPTMR中断入 口地址为 0x0000_0194,中断向量号为 101,中断请求号 IRQ为 85。那么如何确定配置 LPTMR中断所对应的 NVIC寄存器的组号和位号呢?即 LPTMR使用 NVIC寄存器组中的 哪一个寄存器,以及该寄存器的哪个位呢?它们又和中断向量号 IRQ有什么关系呢,下面 分非优先级中断寄存器和优先级中断寄存器分别介绍。 对于非优先级中断寄存器,如上面提到的 NVICISERx、NVICICERx、NVICSPRx、 NVICCPRx以及 NVICABRx,组号的计算公式为 IRQ / 32,所以可以得到 LPTMR的 NVIC非优先级中断寄存器的组号为 85 / 32 = 2,从而得到 LPTMR需要使用的非优先级中 断寄存器为 NVICISER2、 NVICICER2、 NVICISPR2、N

文档评论(0)

l215322 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档