打印

STM32优先级分组 到底有4组还是5组?

[复制链接]
3723|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bhsdlmj|  楼主 | 2009-5-27 09:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
是第0组到第3组  还是 第0组到第4组??

我觉得相应优先级至少占一位的话,应该是第0组到第3组吧!!!

===========================

还有另一个问题问下: “通过让优先级以MSB对齐,可以简化程序的跨器件移植。比如,如果一个程序早先在支持4位优先级的器件上运行,在移植到只支持3位优先级的器件后,其功能不受影响。”
我怎么就看不懂这话啥意思呢??
沙发
HWM| | 2009-5-27 09:57 | 只看该作者

STM32配备有4位中断优先级设置位(16级),若划分2:2便是四组

使用特权

评论回复
板凳
bhsdlmj|  楼主 | 2009-5-27 10:01 | 只看该作者

楼上,划分2:2是其中的第2组!

使用特权

评论回复
地板
HWM| | 2009-5-27 10:06 | 只看该作者

那你的意思应该是能有几种分组法。

使用特权

评论回复
5
bhsdlmj|  楼主 | 2009-5-27 10:14 | 只看该作者

楼上

我的意思是:
第0组:所有4位用于指定响应优先级
第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级
第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级
第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级

因为响应优先级至少占一位!!

但是STM32是这么分的:
第0组:所有4位用于指定响应优先级
第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级
第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级
第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级
第4组:所有4位用于指定抢占式优先级
#define NVIC_PriorityGroup_0         ((uint32_t)0x700) /* 0 bits for pre-emption priority
                                                          4 bits for subpriority */
#define NVIC_PriorityGroup_1         ((uint32_t)0x600) /* 1 bits for pre-emption priority
                                                          3 bits for subpriority */
#define NVIC_PriorityGroup_2         ((uint32_t)0x500) /* 2 bits for pre-emption priority
                                                          2 bits for subpriority */
#define NVIC_PriorityGroup_3         ((uint32_t)0x400) /* 3 bits for pre-emption priority
                                                          1 bits for subpriority */
#define NVIC_PriorityGroup_4         ((uint32_t)0x300) /* 4 bits for pre-emption priority
                                                          0 bits for subpriority */

这不是与“响应优先级至少占一位!!”矛盾么?

使用特权

评论回复
6
bhsdlmj|  楼主 | 2009-5-27 10:17 | 只看该作者

明白了!!

未使用的位 也可以分组!! 多谢HWM

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

351

帖子

0

粉丝