babyhua 发表于 2012-6-19 21:27:46

stm32中断问题


Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此STM32把指定中断优先级的寄存器位减少到4位,这4个寄存器位的分组方式如下:
第0组:所有4位用于指定响应优先级
第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级
第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级
第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级
第4组:所有4位用于指定抢占式优先级
这几天弄到NVIC的时候有点疑问,优先级分组只能选择一次啊,但是优先级 总共的只有2^4的这么多的中断,但是STM32有总共60个啊。

大侠 能不能 个小弟解释一下!!!

babyhua 发表于 2012-6-19 21:38:49

顶一下!

babyhua 发表于 2012-6-19 21:49:19

咋没人回答啊

ttoto 发表于 2012-6-19 22:32:38

怎么说呢,就是说,你只能选择一个组。
譬如说:第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级
也就是说最高的两位你可以有 2*2 四个选择 分别把它们叫做 0 1 2 3 抢占优先级 最低位相应的是可以设置 0 1 2 3 四个子优先级
排列组合一下就是说你可以吧一个中断分配给 16个优先级 分别是这样的00 01 02 。。。。。。31 32 33
这样高抢占优先级的中断会打断第抢占优先级的中断 如00 01 02 03可以打断 10 11 12 13
但是子优先级不存在抢占的概念~10不能抢占11
我讲的不好,好像有一个帖子专门讲这个的。lz多看看。

babyhua 发表于 2012-6-19 22:36:59

ttoto 发表于 2012-6-19 22:32 static/image/common/back.gif
怎么说呢,就是说,你只能选择一个组。
譬如说:第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应 ...

是啊只能选择一个组啊,但是有60个可以配置的中断源,但是优先级设置只能设置16个。

ttoto 发表于 2012-6-19 22:39:46

babyhua 发表于 2012-6-19 22:36 static/image/common/back.gif
是啊只能选择一个组啊,但是有60个可以配置的中断源,但是优先级设置只能设置16个。 ...

两个中断可以放在一起的 譬如说都是11 那么他们的优先级顺序是按照一定的顺序下来的有点像中断向量表。

tiancaigao7 发表于 2012-6-20 07:44:03

别的不说,任何一款芯片都不可能中断源的数量和中断优先级的数量一样的。换句话说,你也不可能给每个中断源附上一个独立的优先级。不过么个中断源都有一个内部的固定优先级,当两个优先级相同的中断同时发生的时候,这个内部优先级就发挥作用。

chengwanshan 发表于 2012-6-20 10:35:21

上面解释的非常清楚了

and001 发表于 2012-6-27 09:50:40

说得都有道理呀

本帖最后由 and001 于 2012-6-27 09:51 编辑

懂得不多!帮忙顶!
页: [1]
查看完整版本: stm32中断问题