你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

原创--哥带你学STM32之中断入门理解——中断优先级NVIC理解

[复制链接]
alan 发布时间:2014-4-1 15:58
STM32编程入门之 编译器KEIL MDK的数据类型及两个重要关键词

NVIC优先级+软件中断(SWIER)+软件仿真+硬件仿真(JTAG)+中断延迟


这篇文章本人写一2011年,当时为了理解STM32的中断就做了个学习笔记,现在为了支持沐紫@沐紫
哥豁出去了。把挖箱底都掏出来了啊,哥准备连发三篇,哈哈2篇已完成了。

首先来说说两个概念,

1、NVIC的优先级概念
抢占式优先级 (pre-emption priority):
高占先式优先级的中断事件会打断当前的主程序/中断程序运行— —抢断式优先响应,俗称中断嵌套。


2、副优先级(subpriority):
在占先式优先级相同的情况下,高副优先级的中断优先被响应;
在占先式优先级相同的情况下,如果有低副优先级中断正在执行, 高副优先级的中断要等待已被响应的低副优先级中断执行结束后才 能得到响应——非抢断式响应(不能嵌套)。

总结:I: 关于抢占优先级,它总是与中断被嵌套相关连.比如说在A中断中嵌套了B中断.B能打断A中断,B中断就一定属于抢占优先级了.

II: 关于副优先级,个人认为它与中断嵌套无关,它不能被嵌套.
2、判断中断是否会被响应的依据
首先是占先式优先级,其次是副优先级;
占先式优先级决定是否会有中断嵌套;
Reset、NMI、Hard Fault 优先级为负(高于普通中断优先级)且不可调整。

接着简单了解一下中断优先级(NVIC.)

STM32嵌套向量中断控制器(NVIC)中断优先级理解

CM3内核寄存器

AIRCR——应用程序中断及复位控制寄存器地址0XE000-ED0C

AIRCR是个32位寄存器,其中第8910位为PRIGROUP 优先级分组设置位。见表1

1 AIRCR寄存器图

            
31

            
            
…………

            
            
10

            
            
9

            
            
8

            
            
………

            
            
0

            



2PRIGROUP[2:0] AIRCR 8,9,10

            
PRIGROUP

            
[2:0]

            
            
Interrupt priority level value, PRI_N[7:4]

            
中断优先寄存器组PRI_N[7:4]

            
            
Number of

            
            
Binary

            
point(1)

            
二进制点位

            
            
Group priority

            
Bits

            
抢占优先级对应位

            
            
Sub priority

            
Bits

            
响应优先级对应位

            
            
Group

            
Priorities

            
抢占优先级

            
            
Sub

            
Priorities

            
响应优先级

            
            
0b011

            
            
0bxxxx

            
            
[7:4]

            
            
None

            
            
16

            
            
None

            
            
0b100

            
            
0bxxx.y

            
            
[7:5]

            
            
[4]

            
            
8

            
            
2

            
            
0b101

            
            
0bxx.yy

            
            
[7:6]

            
            
[5:4]

            
            
4

            
            
4

            
            
0b110

            
            
0bx.yyy

            
            
[7]

            
            
[6:4]

            
            
2

            
            
8

            
            
0b111

            
            
0b.yyyy

            
            
None

            
            
[7:4]

            
            
None

            
            
16

            

2 T 优先级分组

2注释⑴说明:

关于中断优先寄存器组PRI_N[7:4], PRI_NCM3内核中为PRI_1~PRI_249.STM32103XX中可屏蔽中断为60.所以PRI_NPRI_1~PR1_59.

而实际上在MDK里的STM32库文件把PRI_N定义为32位的寄存器组IPR[ 15].

IPR[ 0]~ IPR[ 14],每一维元素因为有32.(每个中断8位配置优先级)所以每一

元素可以配置4个中断.比如说IPR[ 0]的位(31:23)配置中断A,(2315)配

中断B,(15:7)配置中断C,(70)配置中断D。就是说每8位配置一个中断,那么其实这8位中,STM32只用了高4位来配置中断优先级别,低4位无效。

注意STM3210XX系列只用了4位来表示优先级别.所以STM3210XX系列最多优先中断级别为16级。

2^4=16级。

如果上面的一段话对初学者理解还有点迷糊的话,我们看一下下面的图就应该很清楚了。

结合STM32库文件表达:就是SCB->AIRCR配置--------IP[0]

这里有一个歧义AIRCR配置--------IPR[0]是对整个32IPR[0]四个中断同时配置呢?还是可以对IPR[0]中的四个中断分别设置,个人觉得可以分别独立配置

2真值表就是具体配置STM32中断级优先级别了。



参考1:表2来自ST官方资料,STM32F10xxx Cortex-M3编程手册-英文版.pdf第135页。

参考2:Cortex-M3 权威指南.PDF

STM32之中断入门理解.pdf

下载

159.2 KB, 下载次数: 459

收藏 1 评论12 发布时间:2014-4-1 15:58

举报

12个回答
沐紫 回答时间:2014-4-1 21:06:16

RE:原创--哥带你学STM32之中断入门理解——中断优先级NVIC理解

过来支持一把楼主
alan 回答时间:2014-4-3 16:11:13

回复:原创--哥带你学STM32之中断入门理解——中断优先级NVIC理解

回复第 2 楼 于2014-04-01 21:06:16发表:
过来支持一把楼主 

谢谢沐版主
ysdx06010302 回答时间:2014-4-19 07:48:43

回复:原创--哥带你学STM32之中断入门理解——中断优先级NVIC理解

 支持一下。谢谢
123-424225 回答时间:2014-4-20 15:34:09

回复:原创--哥带你学STM32之中断入门理解——中断优先级NVIC理解

xuexixuexi
sdddd 回答时间:2014-4-20 16:34:59

回复:原创--哥带你学STM32之中断入门理解——中断优先级NVIC理解

受教qqqqqqqqqqqqqq
nihaoshijie5188 回答时间:2017-2-1 11:15:13
stm2i 回答时间:2017-2-1 12:49:48
感谢分享!
五哥1 回答时间:2017-2-1 22:48:14
谢谢分享
wofei1314 回答时间:2017-2-6 10:11:25
谢谢分享~
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版