历史上的今天

今天是:2024年08月26日(星期一)

正在发生

2018年08月26日 | STM32关于NVIC寄存器方向理解

发布者:mancozc 来源: eefocus关键字:STM32  NVIC寄存器 手机看文章 扫描二维码
随时随地手机看文章

中断向量嵌套控制器是用来管理所有中断和事件的,包括中断的使能和除能,中断的优先级。这个是属于内核的东西,所以ST的参考手册上对它的描述较少,但他又是十分重要的东西,要了解它就要看ARM的《Cortex™-M4 Devices Generic User Guide》。

 

相关寄存器

译自《Cortex™-M4 Devices Generic UserGuide》,若有错误,请以原文为准。

 

中断使能寄存器NVIC_ISER[8]

中断使能寄存器共有8个,ISER[0]设置0~31号中断的使能,ISER[1]设置32~63号中断的使能,如此类推。以下以ISER[0]为例:


[31:0] SETENA中断设置使能位。
写:
0 =无影响
1 =使能中断。
读:
0 =中断是禁止的
1=中断已经被使能

如果要使能0号中断,就向该寄存器的0位写1,如果要使能38号中断,就向NVIC_ISER[1]的6位写1,如此类推,至于哪个中断对应哪个中断号,请参见参考手册《RM0090 Reference manual》中的第9章Table 30. Vector table的Position一列。

 

 

 

中断除能寄存器NVIC_ICER[8]

中断除能寄存器共有8个,ICER[0]设置0~31号中断除能,ICER[1]设置32~63号中断的使能,如此类推。以下以ICER[0]为例:



[31:0] SETENA中断设置使能位。
写:
0 =无影响
1 =除能中断。
读:
0 =中断是禁止的
1=中断已经被使能

以下寄存器均为8个,仅以***R[0]为例

 

 

 

中断挂起设置寄存器NVIC_ISPR[8]


[31:0]SETPEND中断挂起设置位。
写:
0 =无影响
1 =改变中断状态为挂起。
读:
0 =中断没有挂起
1 =中断正在等待处理。

 

 

 

解除中断挂起寄存器NVIC_ICPR[8]


[31:0] CLRPEND中断清除挂起位。
写:
0 =无影响
1 =删除中断的挂起状态。
读:
0 =没有挂起的中断
1 =中断正在等待处理。

 

 

 

中断激活位寄存器NVIC_IABR[8]


[31:0]中断活跃的标志:
0 =中断不活跃
1 =中断活跃。

如果相应的中断的状态是作为一个活跃的或活跃和正被挂起的,读该位将会读出1。

 

 

 

 

中断优先级寄存器NVIC_IPR[60]


       中断优先级寄存器为60个32位寄存器,st的结构体中用了240个8位的字节数组NVIC->IP[240]来映射,每一个对应一个中断的优先级。

ARM的中断优先级分两种,抢占优先级和响应优先级。

        具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。

         当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。

        中断优先级分组就是把优先级寄存器分割,分开哪几位是响应优先级,哪几位是抢占优先级。至于怎样设置分组,就要看一个不属于NVIC的寄存器了。

 

 

 

应用中断和复位控制寄存器SCB_AIRCR


在这里我们需要看的是[31:16]位和[10:8]位,[31:16]位是识别码,用以保护此寄存器不会被意外修改,[10:8]位就是中断优先级分组的设置位。

[31:16]

写:VECTKEYSTAT
读:VECTKEY
RW注册键:
读为0xFA05
写入时,要写0x05FA到 VECTKEY,否则写入将被忽略。

 

[10:8]中断优先级


每一个ARM的M4中断优先级设计为可编程的8位,具体到stm32f4就只留给用户4位共16级的可编程优先级,其中低4位已被占用。也就是说stm32f4的优先级分组情况如下表所示:

[10:8]

分割点

抢占优先级位

响应优先级位

抢占优先级数

响应优先级数

0b011

xxxx

[7:4]

none

16

1

0b100

xxx.y

[7:5]

[4]

8

2

0b101

xx.yy

[7:6]

[5:4]

4

4

0b110

x.yyy

[7]

[6:4]

2

8

0b111

yyyy

none

[7:4]

1

16

 

 

 

最后一个NVIC的寄存器

软件触发中断寄存器NVIC_STIR


当SCB_CCR的USERSETMPEND位为1时,无特权的用户程序才能写此寄存器。

[31:9]保留。
[8:0] INTID  ID号中断触发,
范围0-239。例如,0x03的指定中断IRQ3触发。


关键字:STM32  NVIC寄存器 引用地址:STM32关于NVIC寄存器方向理解

上一篇:STM32M3_GPIO寄存器&GPIO工作方式
下一篇:寄存器名称和地址的映射分析

推荐阅读

不需要拆机就能对产品进行固件升级是很多人想要的效果,不仅方便而且节省精力和成本。那么如何完成这项工作呢?接下来所介绍的Bootloader就可以完成这项工作,通过Bootloader引导程序完成固件的升级。下面来浅析STM32 Bootloader设计。首先谈谈stm32的ISP和IAP区别和联系。ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最...
国际首套10MW先进压缩空气储能示范系统   储能是解决可再生能源大规模接入、提高常规电力系统和区域能源系统效率、安全性和经济性的迫切需要,被称为能源革命的支撑技术,是国家大力支持的战略性新兴产业。   而压缩空气储能(CAES)具有规模大、单位成本低、寿命长、安全环保等诸多优点,备受业内的关注。   近日,中国科学院工程热物理研究...
据 The Mobile Indian 最近的一份报告显示,HMD Global 将于本月在印度发布诺基亚 5.3 智能手机。手机的登陆页面现在已经出现在诺基亚的印度网站上。该页面显示了手机的规格和功能。因此,诺基亚 5.3 似乎会即将发布。诺基亚 5.3 的尺寸为 164.3 x 76.6 x 8.5 毫米,重 180 克。该手机采用一块 6.55 英寸的 LCD 面板,水滴设计的...
前段时间学习了飞思卡尔K60芯片的时钟系统,对它的时钟系统有了个大致的了解,这里把自己的理解写下来分享一下,以备以后参考。飞思卡尔 Kinetis系列是飞思卡尔推出的基于ARM CORTEX-M4为核心的微控制器。1.飞思卡尔K60时钟系统 飞思卡尔K60时钟系统如上图所示,可以发现器件的源时钟源一共有4个: ①内部参考时钟源,包括 Fast IRC和...

史海拾趣

问答坊 | AI 解惑

请教大家一个关于二极管的问题

假如二极管的最大反向耐压是100V,正向是90V,用2个一样的串联是不最大反向耐压就是200了,正向就时180V?请教高手指点…

查看全部问答∨

工欲善其事必先利其器—测试测量工具大搜索

测试测量的第一个主题活动,入门篇,测试测试工具大搜索。也欢迎大家说说自己的使用心得。 测试测量必备工具一:万用表 测试测量必备工具二:示波器 测试测量必备工具三:信号发生器 测试测量必备工具四:频谱仪…

查看全部问答∨

无线通讯技术在工业自动化领域中的应用及发展

本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 一、引言 无线网络,顾名思义是利用无线电波而非线缆来实现与计算机设备位置无关的网络数据传输系统,是现代数据通信系统发展的一个重要方向。随着计算机网络技术、无线技术以及智能传感器技 ...…

查看全部问答∨

大家听说过震动产生能量么?

据说如果安装在桥梁上的传感器,就是车子开过,桥梁震动,自己供电。 不知道大家有没有做过相关的项目? 对着项技术前景怎么看?…

查看全部问答∨

LED封装工作流程

固晶→原材料准备→检查支架→检查芯片→扩晶→固晶→固晶烤检→烘烤 ↓ 焊线→焊线→焊线全检→点荧光粉→烘烤 ↓ 封胶→清理模条→模条预热→发放支架→胶水、模条准备→灌胶→支架沾胶→插支架→短烤→离模→长烤 ↓ 后测→一切→测试→外 ...…

查看全部问答∨

c语言中能重复定义吗?

在mcu中,我想在一个c文件中用同样的宏,却在每个函数中实现不同的功能。。   各位高手,,有没有什么办法实现呀。。 例:#define setSDA  P1|=(1<<5); 我在 readrtc1()中想用到的是setSDA 代表  P1|=(1 ...…

查看全部问答∨

知名外资通讯企业招聘软件开发工程师,协议工程师,算法分析和实现工程师及算法分析系统仿真工程师!!!

无线产品软件开发工程师 职责描述: 负责无线产品软件模块的设计、编码、调试、单元测试等工作,参与相关质量活动,确保设计及实现工作按时保质完成。 职位要求: 1. 本科以上学历,计算机软件、通信、电子、数学、物理及相关专业,有扎实的 ...…

查看全部问答∨

用什么代码能开启pda的无线功能?

用什么代码能开启pda的无线功能? wince高手们,小弟现在用的是华硕的626的一款pda,操作系统是windows   mobile6.0,支持无线Wi-Fi; 小弟现有一个问题,我在程序中用什么函数能够自动启用无线功能?…

查看全部问答∨

郭天祥单片机教程

本帖最后由 paulhyde 于 2014-9-15 09:11 编辑 在学校论坛找的一本郭天祥单片机教程的PDF,看着还不错,讲的东西都跟竞赛相关,很实用。不敢独享,发来论坛与大家分享。内容太大,135网盘下载:…

查看全部问答∨

急招兼职: 诚找人编写DSP、FPGA开发类图书

榕盛文化公司(rssdbook.)致力于图书的选题策划、编辑加工和出版,由具有大型出版社工作背景、从事图书出版10余年的资深编辑组建。公司以“弘扬优秀文化、传播卓越品质”为出版理念,成立以来已有数十本图书在全国出版,其中畅销书多达30本,有10 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved