骑着单车追捷豹 发表于 2016-2-26 12:00:23

如何在keil中观测各中断的优先级顺序


各位前辈,我设置了个中断的优先级,想在KEIL中观测程序运行后,各中断优先级的顺序,如何查看?是在Peripherals中的NVIC窗口中看吗??其中的   E   P   A   Priority各代表什么意思呢??谢谢

creep 发表于 2016-2-26 15:09:54

E表示 enable    使能中断
P表示 pending 有中断挂起
A表示active   有中断激活
Priority    中断优先级

猜的,不一定对:lol

watershade 发表于 2016-2-26 22:29:05

本帖最后由 watershade 于 2016-2-26 22:30 编辑

creep大神也但是优先级怎么还有208.这是甚意思

yanhaijian 发表于 2016-2-27 10:29:46

应该无法观测吧。还是看代码推算。

creep 发表于 2016-2-27 11:52:00

本帖最后由 creep 于 2016-2-27 11:53 编辑

watershade 发表于 2016-2-26 22:29
creep大神也但是优先级怎么还有208.这是甚意思
1、首先STM32的优先级只使用8个bit中的高4bit来表达中断源优先级,低四个bit总是为0.类似如下(下面的情况使用了高3个bit):


2、其次是中断优先级进行了分组:


3、假设我们使用优先级组2话那就是2个bit的抢占优先级和2个bit的相应优先级,同时我们设置抢占优先级为3,响应优先级为1。
   也就是对应的优先级寄存器Bit7为1,Bit6为1,Bit5为0,Bit4为1 ,bit3到bit0默认为0,那么中断源优先级的值就是208(1101 0000)
然后将这个值写到对应中断源的寄存器中:

具体的参考《CM3权威指南》异常和中断控制部分:

以及内核编程手册NVIC寄存器部分:



watershade 发表于 2016-2-27 20:42:22

creep 发表于 2016-2-27 11:52
1、首先STM32的优先级只使用8个bit中的高4bit来表达中断源优先级,低四个bit总是为0.类似如下(下面的情况 ...

谢谢了。我知道有主优先级和sub-priority但是不确定208(0xD0)到底是几位子优先级,几位是主优先级。
此外还应看到的是,小于0的优先级是内核使用的优先级。所以那张图片的细节还是蛮多的。

再次谢谢

creep 发表于 2016-2-27 22:56:32

watershade 发表于 2016-2-27 20:42
谢谢了。我知道有主优先级和sub-priority但是不确定208(0xD0)到底是几位子优先级,几位是主优先级。
此 ...

优先级分组可以从下面的红框中看出,应该是优先级分组2,2个bit的主优先级2个bit的子优先级。

watershade 发表于 2016-2-28 19:43:18

creep 发表于 2016-2-27 22:56
优先级分组可以从下面的红框中看出,应该是优先级分组2,2个bit的主优先级2个bit的子优先级。

...

谢谢了,我回头细细看一下
页: [1]
查看完整版本: 如何在keil中观测各中断的优先级顺序