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

2019-07-20 23:41发布

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

问题九:在设置具体的中断优先级时,如果超出了设置范围会如何?
答:一个系统,优先级分组设定之后,其抢占优先级及响应优先级的数值范围也就确定了。
比如在4位的优先级系统中,如果设定了采用分组2,即抢占和响应各占2位,就有0-3共四级抢占,0-3共四级响应,对于每个具体的中断,则根据实际需要,在可选范围内分配抢占级和响应级,不要超出范围。如果超出会怎样呢?比如我设某中断的抢占级为5,响应级为7,调用库函数时,一般会根据优先级分组设定的位数要求,从最低位开始进行截取,由于抢占和响应各占2位,如果设置抢占级为5,即0101截取低两位为01即=1;如果设置响应级为7,即0111截取低两位为11即=3 。这样的结果,不知道是不是符合你的预期就不得而知了。

一周热门 更多>