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

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

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

文档评论(0)

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

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

1亿VIP精品文档

相关文档