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

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

[复制链接]
alan_bach 发布时间: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, 下载次数: 461

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

举报

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

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

过来支持一把楼主
alan_bach 回答时间: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
谢谢分享~
jmzlzl 回答时间:2017-3-11 21:30:37
感谢分享
zbber 回答时间:2017-3-11 23:13:55
谢谢分享,不错,真是太棒了!
哈哈先生105 回答时间:2017-8-27 17:02:21
谢谢分享

所属标签

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