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

2019-07-20 23:41发布

CM3内核集成了强大的NVIC(可嵌套的向量中断控制器),
权威指南中介绍它就花了大量篇幅,
要把整个NVIC完全搞懂也不容易,
我也只学习了一点皮毛,
对于初学者来说,中断优先级分组及中断优先级设定这种基本问题是绕不开的,
刚接触NVIC的同学对此常有疑问,
本帖仅仅针对STM32中断优先级分组这一个方面,
给初学者科普一下这方面的常见问题,
老手请绕道,不过欢迎进来交流。
也可以提新的问题,我所知道的尽量解答。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
49条回答
warship
2019-07-21 15:23
本帖最后由 warship 于 2018-7-22 18:12 编辑

问题三: 中断优先级设置是如何表示优先级的?
答:问题二中我们说,每个外部中断由8比特来表示自己的中断优先级。
那么,这8比特的表示范围就是0-255即共有256种取值,可以表达256种不同的优先级。
ARM规定,优先级的取值越小,优先级别越高。 即0最高(系统内部还有级别更高的几个负数优先级的,这是特殊情况,本帖不讨论),255最低。
如果只是简单这么定义的话,就比较好理解了,初学者也不会有种种的疑问了。
这种表示方法总体是对的,但太粗线条了。它只是简单把中断分成了256级,级数太多,没有主次,不方便使用和管理。
就像社会上有256个人,每个人都不同级别一样,估计你会眼花缭乱。
怎么办?那就是先分阶层,阶层内再分子级的分层管理。 如先分统治阶层、奴隶主、奴隶等,同一阶层再区分小级别。
这样,就引入了分组的概念,先规定一下,这8比特怎么用? 用几比特表示阶层,用几比特来表示小级别。
就像我们的身份证一样,规定几位表示地区,几位表示生日等等。

一周热门 更多>