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

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

ID:52955967

大小:402.04 KB

页数:6页

时间:2020-04-03

K60芯片NVIC模块中断相关寄存器配置以及应用举例.pdf_第1页
K60芯片NVIC模块中断相关寄存器配置以及应用举例.pdf_第2页
K60芯片NVIC模块中断相关寄存器配置以及应用举例.pdf_第3页
K60芯片NVIC模块中断相关寄存器配置以及应用举例.pdf_第4页
K60芯片NVIC模块中断相关寄存器配置以及应用举例.pdf_第5页
资源描述:

《K60芯片NVIC模块中断相关寄存器配置以及应用举例.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、飞思卡尔Kinetis芯片中NVIC模块的中断寄存器的介绍及其应用举例喻宁宁IMM现场应用工程师飞思卡尔半导体一、NVIC模块的中断寄存器简介嵌套式向量中断控制器(NVIC)是Cortex内核不可分割的一部分,它与CPU紧密结合,可对系统异常和外设中断进行控制。如图1所示,NVIC右端连接到各个外围模块,负责对外设中断进行处理;左端连接到内核,负责对内核系统异常进行处理。本文重点介绍NVIC对外围模块的中断控制。通常,在配置某个外围模块的中断功能时,除了需要设置此模块本身的寄存器中的中断使能位外,还需要配置NVIC模块中对应的中断控制寄存器,系统才会响应此外围模块的

2、中断请求。图1NVIC的连接框图ARMCotex-M4的NVIC模块中相关寄存器的地址、名称、功能描述如图2所示,它们可分为两种类型:非优先级中断寄存器(non-IPRregister)和优先级中断寄存器(IPRregister)。其中,非优先级中断寄存器有以下几种:NVICISERx:中断使能设置寄存器;NVICICERx:中断使能清除寄存器;NVICISPRx:中断挂起设置寄存器;NVICICPRx:中断挂起清除寄存器;NVICIABRx;中断激活状态寄存器;其中x为0-7,称为寄存器的组号,表示每种寄存器都有8个。这些寄存器都是32位的。因此,如果每一位控制一

3、个中断源,则可以分别控制256个中断源。通常,NVICISERx(中断使能设置寄存器)用于去使能某个中断,而NVICICPRx(中断挂起清除寄存器)用于配合NVICISERx寄存器来使能这个中断;NVICIABRx(中断激活状态寄存器)为只读寄存器,用于判断某个中断是否处于激活的状态。图2NVIC寄存器描述而优先级中断寄存器只有一种:NVICIPRx,用于设定每个中断源的优先级。从图3可以看到,每个中断源的优先级控制字要占用4位,再加上保留位,则每个32位的寄存器可以配置4个中断源的优先级。因此,如果要配置256个中断源的优先级,则需要256÷4=64个32位的寄存

4、器。但是Kinetis系列MCU的中断源一般都没有这么多,也就不需要这么多的寄存器。图3中断优先级控制寄存器位域分布下面以K60为例进行具体说明。K60支持16级中断控制,所以在NVIC中,对应于不同的中断源,在优先级中断寄存器NVICIPRx中都有4个相应的位来控制其优先级,另外还有4位是保留位,如图3所示。从图2可以看出,每种非优先级中断寄存器都是一个包含8个32位寄存器的寄存器组。那么在应用过程中,对应于K60的90多种不同的中断源,应该配置这些寄存器组中的哪一个寄存器(组号)和该32位寄存器的那一位(位号)呢?简单来说,就是组号和位号的确定。例如NVICIC

5、ER2[21],它的组号就是2,位号就是21。这就需要借助芯片厂商在CPU中为不同中断源定义的中断请求号IRQ。需要特别注意的是,中断向量号和中断请求号IRQ号不同,中断请求号IRQ=中断向量号-16,因为有16个ARM内核中断请求是没有分配IRQ号的。在K60的ReferenceManual的P74页可以看到CPU中断向量分配表,定义了各种不同的中断源所对应的中断入口地址、中断向量号、中断请求号、寄存器号以及彼此之间的关系,如图4所示。图4LPTMR中断向量的分配这里结合K60的中断向量分配表,以LPTMR(低功耗定时器)模块为例介绍一下NVIC寄存器的配置。LP

6、TMR模块的中断向量分配如图4所示,可以看到LPTMR中断入口地址为0x0000_0194,中断向量号为101,中断请求号IRQ为85。那么如何确定配置LPTMR中断所对应的NVIC寄存器的组号和位号呢?即LPTMR使用NVIC寄存器组中的哪一个寄存器,以及该寄存器的哪个位呢?它们又和中断向量号IRQ有什么关系呢,下面分非优先级中断寄存器和优先级中断寄存器分别介绍。对于非优先级中断寄存器,如上面提到的NVICISERx、NVICICERx、NVICSPRx、NVICCPRx以及NVICABRx,组号的计算公式为IRQ/32,所以可以得到LPTMR的NVIC非优先级中

7、断寄存器的组号为85/32=2,从而得到LPTMR需要使用的非优先级中断寄存器为NVICISER2、NVICICER2、NVICISPR2、NVICICPR2、NVICIABR2。这些寄存器都是32位的,所以对应于LPTMR的位号计算公式为IRQ%32,得到85%32=21。确定完了组号和位号,便得到了需要设置的LPTMR的非优先级中断控制寄存器及相应的位为:NVICISER2[21]、NVICICER2[21]、NVICISPR2[21]、NVICICPR2[21]、NVICIABR2[21]。对于优先级中断寄存器IPR,如上所述,因为每一个IPR寄存器可以设

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

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

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