关于STM32中断优先级分组的科普,初学者常见问题解答(Q&A)

2019-07-20 23:41发布

CM3内核集成了强大的NVIC(可嵌套的向量中断控制器),
权威指南中介绍它就花了大量篇幅,
要把整个NVIC完全搞懂也不容易,
我也只学习了一点皮毛,
对于初学者来说,中断优先级分组及中断优先级设定这种基本问题是绕不开的,
刚接触NVIC的同学对此常有疑问,
本帖仅仅针对STM32中断优先级分组这一个方面,
给初学者科普一下这方面的常见问题,
老手请绕道,不过欢迎进来交流。
也可以提新的问题,我所知道的尽量解答。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
49条回答
warship
1楼-- · 2019-07-24 08:19
 精彩回答 2  元偷偷看……
YHJD
2楼-- · 2019-07-24 11:03
 精彩回答 2  元偷偷看……
xiao19344859
3楼-- · 2019-07-24 15:59
warship 发表于 2018-7-22 16:38
问题七:我们常用的4BIT优先级,分组是如何定义的?
答:前面提到过,CM3的内核是规划了用8位来表示优先级 ...

感谢楼主的解惑,
一直有几个问题让我困扰,望楼主解答
第一各问题  SCB->AIRCR(楼主的意思是这个是设置优先级分组寄存器)
这个寄存器楼主是怎么找到的,我在STM32中文参考手册没找到  在CM3技术手册中也没有找到这个寄存器
第二个问题   中断优先级序号在那个寄存器设置,同样在SCB->AIRCR这个寄存器设置吗?设置的的是4  5  6  7位吗,可我还是回到第一个问题了,我找不到手册中的SCB->AIRCR 寄存器描述



以下是我的理解:
设置好了优先级分组,但是还没有设置好优先级序号,  
如:分组2,即2位子优先级,2位抢占优先级(对应上面的方法5,设置SCB->AIRCR的BIT10:8为101),这里我也能看懂,2位抢占优先级和2位子优先级  也就是抢占优先级可以设置成 00的时候,子优先级还可以设置成00 01 10 11四种模式  
同时抢占式优先级设置成01的时候 同样子优先级同样还可以设置成00 01 10 11四种模式,
warship
4楼-- · 2019-07-24 21:09
xiao19344859 发表于 2018-9-17 21:52
感谢楼主的解惑,
一直有几个问题让我困扰,望楼主解答
第一各问题  SCB->AIRCR(楼主的意思是这个是设置 ...

http://www.openedv.com/forum.php ... 8%CD%FE%D6%B8%C4%CF
warship
5楼-- · 2019-07-24 22:18
xiao19344859 发表于 2018-9-17 21:52
感谢楼主的解惑,
一直有几个问题让我困扰,望楼主解答
第一各问题  SCB->AIRCR(楼主的意思是这个是设置 ...

有一本书叫做CM3权威指南,链接见楼上。
对分组的理解你是对的,在SCB->AIRCR的BIT10:8这3位中设置,并且只有这一处。
对于优先级,你的理解也是对的,但不是在4  5  6  7位,
每一个具体的中断都要设置独立的优先级,光这4位怎么够。
内核中有一群庞大的寄存器组,就是用来干这事儿的,参见本主题的问题二(在第3楼)。

agelarui
6楼-- · 2019-07-25 03:34
 精彩回答 2  元偷偷看……

一周热门 更多>