打印
[ZLG-MCU]

求助:LM3S101组优先级到底是怎么回事????????????

[复制链接]
2923|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ATmega16|  楼主 | 2007-11-9 18:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
LM3S101优先级只有8个,占用PRI_N的[7:5]位,
那么
优先级0 PRI是00000000
优先级1 PRI是00100000
优先级2 PRI是01000000
优先级3 PRI是01100000
优先级4 PRI是10000000
优先级5 PRI是10100000
优先级6 PRI是11000000
优先级7 PRI是11100000

假设优先级是按NVIC_APINT_PRIGROUP_2_6分组,那么
优先级0 PRI是00000000    低组优先级
优先级1 PRI是00100000    低组优先级
优先级2 PRI是01000000    高组优先级
优先级3 PRI是01100000    高组优先级
优先级4 PRI是10000000    高组优先级
优先级5 PRI是10100000    高组优先级
优先级6 PRI是11000000    高组优先级
优先级7 PRI是11100000    高组优先级

综合起来,优先级7还必优先级0高,并切能嵌套优先级0???


相关帖子

沙发
逐风| | 2007-11-9 22:16 | 只看该作者

有这么用的么?

使用特权

评论回复
板凳
ATmega16|  楼主 | 2007-11-10 08:47 | 只看该作者

LM3S101组优先级到底是怎么回事????????????

lm3s101默认组优先级划分是NVIC_APINT_PRIGROUP_7_1,
高七位是组高优先级位,最地位是组低优先级位?????

只有优先级0是低组优先级,其他优先级全部是高组优先级?
不对啊!????

LM3S101组优先级到底是怎么回事????????????

使用特权

评论回复
地板
ATmega16|  楼主 | 2007-11-12 18:51 | 只看该作者

继续问

继续问

使用特权

评论回复
5
逐风| | 2007-11-12 23:38 | 只看该作者

再看看书

明天我也研究一下……呵呵

使用特权

评论回复
6
ZLGARM| | 2007-11-13 16:02 | 只看该作者

您好!

LM3S101有8个中断优先级组,所以可以支持8级中断嵌套,同组优先级的中断不能嵌套,可以是中断迟来和末尾连锁。

使用特权

评论回复
7
ATmega16|  楼主 | 2007-11-13 18:59 | 只看该作者

to 楼上

to 楼上
LM3S101有8个优先级是指具有8个组优先级??优先级只占用3位,全部都用来做组优先级了,那么怎么设置次优先级呢????

使用特权

评论回复
8
ZLGARM| | 2007-11-20 17:12 | 只看该作者

ATmega16您好!

    在群星系列单片机里,只取最高3位有效,也就是说最多只能设置8个优先级进行占先。如果您需要设置次优先级,那么可以改变NVIC_APINT_PRIGROUP寄存器,把它设置成5或者6(原来默认是0,但是群星只能是最高三位有效,所以到0-4效果都是一样。),那么减少了组优先级的设置数量,用减少的组优先级来设置次优先级。例如将NVIC_APINT_PRIGROUP寄存器6《8,这样只有1个组优先级,剩下两个位可以用来设置成次优先级。最好是用最高3位来做组优先级,次优先级可以利用默认的硬件优先级。
如果您还不是很明白,请给我们电话或者邮件,我们可以提供实验范例.
lm3@zlgmcu.com
020-22644252

使用特权

评论回复
9
ATmega16|  楼主 | 2007-11-21 11:33 | 只看该作者

能否给easyarm101用组优先级和次优先级范例。

多谢。
能否给easyarm101用组优先级和次优先级范例。
atmega32@126.com

使用特权

评论回复
10
s99060| | 2007-11-21 21:31 | 只看该作者

组就是可以嵌套,次就是只能排队不能嵌套

使用特权

评论回复
11
逐风| | 2007-11-22 09:11 | 只看该作者

LS说的很对

组优先可以占先,次优先只能末尾连锁。

使用特权

评论回复
12
ATmega16|  楼主 | 2007-11-22 09:12 | 只看该作者

楼上能否详细说明一下?



#define NVIC_APINT_PRIGROUP_7_1 0x00000000  // Priority group 7.1 split
#define NVIC_APINT_PRIGROUP_6_2 0x00000100  // Priority group 6.2 split
#define NVIC_APINT_PRIGROUP_5_3 0x00000200  // Priority group 5.3 split
#define NVIC_APINT_PRIGROUP_4_4 0x00000300  // Priority group 4.4 split
#define NVIC_APINT_PRIGROUP_3_5 0x00000400  // Priority group 3.5 split
#define NVIC_APINT_PRIGROUP_2_6 0x00000500  // Priority group 2.6 split
#define NVIC_APINT_PRIGROUP_1_7 0x00000600  // Priority group 1.7 split
#define NVIC_APINT_PRIGROUP_0_8 0x00000700  // Priority group 0.8 split

请问:比如说优先级分组是NVIC_APINT_PRIGROUP_6_2,哪些优先级级是高组优先级,哪些是低组优先级?或者说PRI_N的值哪些是高组优先级,哪些是低组优先级呢?

使用特权

评论回复
13
康康MCU| | 2007-11-23 22:04 | 只看该作者

中断优先级


目前Luminary单片机的中断优先级只有8级,即:占用PRI_N的[7:5]位。
组优先级+次优先级=8级,所以最多有3位组优先级,或3位次优先级
对于优先级分组:
#define NVIC_APINT_PRIGROUP_7_1 0x00000000  // Priority group 7.1 split
#define NVIC_APINT_PRIGROUP_6_2 0x00000100  // Priority group 6.2 split
#define NVIC_APINT_PRIGROUP_5_3 0x00000200  // Priority group 5.3 split
#define NVIC_APINT_PRIGROUP_4_4 0x00000300  // Priority group 4.4 split
#define NVIC_APINT_PRIGROUP_3_5 0x00000400  // Priority group 3.5 split
#define NVIC_APINT_PRIGROUP_2_6 0x00000500  // Priority group 2.6 split
#define NVIC_APINT_PRIGROUP_1_7 0x00000600  // Priority group 1.7 split
#define NVIC_APINT_PRIGROUP_0_8 0x00000700  // Priority group 0.8 split
对Luminary单片机来说,以下4种设置无效:
#define NVIC_APINT_PRIGROUP_7_1 0x00000000  // Priority group 7.1 split
#define NVIC_APINT_PRIGROUP_6_2 0x00000100  // Priority group 6.2 split
#define NVIC_APINT_PRIGROUP_5_3 0x00000200  // Priority group 5.3 split
#define NVIC_APINT_PRIGROUP_4_4 0x00000300  // Priority group 4.4 split
 
所以对于LM3S--来说,只有以下设置优先级分组有效:
#define NVIC_APINT_PRIGROUP_3_5 0x00000400  // Priority group 3.5 split
#define NVIC_APINT_PRIGROUP_2_6 0x00000500  // Priority group 2.6 split
#define NVIC_APINT_PRIGROUP_1_7 0x00000600  // Priority group 1.7 split
#define NVIC_APINT_PRIGROUP_0_8 0x00000700  // Priority group 0.8 split
其中,NVIC_APINT_PRIGROUP_3_5 组优先级3位,不能设置次优先级,可将任意外部中断设置成组优先级,优先级高低由用户设定;同理:NVIC_APINT_PRIGROUP_2_6 组优先级2位,次优先级1位; NVIC_APINT_PRIGROUP_1_7组优先级1位,次优先级2位;NVIC_APINT_PRIGROUP_0_8无组优先级,全部为次优先级,而且中断只能采用末尾连锁。
注意:高组优先级可占先低组优先级;
         组优先级相同的,次优先级间不能相互占先,即使具有较高的次优先级,同组内的次优先级只能采用末尾连锁方式。
所以,楼上说的优先级分组是NVIC_APINT_PRIGROUP_6_2的,对LM3S-默认全部为组优先级。




 

使用特权

评论回复
14
康康MCU| | 2007-11-23 22:20 | 只看该作者

中断优先级

高组优先级和低组优先级是用户自行设置的,不是简单的NVIC_APINT_PRIGROUP_6_2(PRI_N的值)就可以决定了的,它只是起到可以设置几位组优先级。
真正的高低组优先级需要在设置成的组优先级位中来设置。
注意设置中起作用的只有【7:5】位。

使用特权

评论回复
15
ATmega16|  楼主 | 2007-11-24 09:01 | 只看该作者

多谢

多谢。
我假设的优先级分组是NVIC_APINT_PRIGROUP_2_6,没说成NVIC_APINT_PRIGROUP_6_2。


LM3S101优先级只有8个,占用PRI_N的[7:5]位,
那么
优先级0 PRI是000XXXXX
优先级1 PRI是001XXXXX
优先级2 PRI是010XXXXX
优先级3 PRI是011XXXXX
优先级4 PRI是100XXXXX
优先级5 PRI是101XXXXX
优先级6 PRI是110XXXXX
优先级7 PRI是111XXXXX

假设优先级是按NVIC_APINT_PRIGROUP_2_6分组(两位组优先级位,一位次优先级位),那么
优先级0 PRI是000XXXXX    低组优先级
优先级1 PRI是001XXXXX    低组优先级
优先级2 PRI是010XXXXX    高组优先级
优先级3 PRI是011XXXXX    高组优先级
优先级4 PRI是100XXXXX    高组优先级
优先级5 PRI是101XXXXX    高组优先级
优先级6 PRI是110XXXXX    高组优先级
优先级7 PRI是111XXXXX    高组优先级

综合起来,优先级7还必优先级0高,并切能嵌套优先级0??? 

使用特权

评论回复
16
逐风| | 2007-11-25 23:55 | 只看该作者

AT你钻到牛角了

你怎么还是没明白呢?书上这么说的低组高组么?
如果你改变了那三位的配置,你所谓的优先级0和1是同组分配次优先级。感觉有点郁闷了。

使用特权

评论回复
17
ATmega16|  楼主 | 2007-11-26 10:18 | 只看该作者

楼上能否解释清楚一点

假设优先级是按NVIC_APINT_PRIGROUP_2_6分组(两位组优先级位,一位次优先级位),那么PRI_N的[7:5]八种组合各代表什么优先级呢?

使用特权

评论回复
18
康康MCU| | 2007-11-26 21:21 | 只看该作者

AT,你没认真理解我上面的那段吧?!呵呵

假设优先级是按NVIC_APINT_PRIGROUP_2_6分组(两位组优先级位,一位次优先级位),那么PRI_N的[7:5]八种组合各代表什么优先级呢?

8个优先级中可设4个组优先级,2个次优先级
00 0 XXXXX :组优先级0,次优先级0
00 1 XXXXX :组优先级0,次优先级1

01 0 XXXXX :组优先级1,次优先级0
01 1 XXXXX :组优先级1,次优先级1

10 0 XXXXX :组优先级2,次优先级0
10 1 XXXXX :组优先级2,次优先级1

11 0 XXXXX :组优先级3,次优先级0
11 1 XXXXX :组优先级3,次优先级1

NVIC_APINT_PRIGROUP_2_6分组如上,
而你说的:
   优先级0 PRI是000XXXXX    低组优先级
   优先级1 PRI是001XXXXX    低组优先级
   优先级2 PRI是010XXXXX    高组优先级
   优先级3 PRI是011XXXXX    高组优先级
   优先级4 PRI是100XXXXX    高组优先级
   优先级5 PRI是101XXXXX    高组优先级
   优先级6 PRI是110XXXXX    高组优先级
   优先级7 PRI是111XXXXX    高组优先级
优先级7:代表组优先级为3,次优先级为1
优先级0:代表组优先级为0,次优先级为0
所以优先级0>优先级7,优先级0可占先优先级7
优先级0-7只是代号而已。。。。。。。。。

使用特权

评论回复
19
逐风| | 2007-11-26 22:53 | 只看该作者

LS对的

LS说的很正确,AT应该好好看看……

使用特权

评论回复
20
ATmega16|  楼主 | 2007-11-28 08:43 | 只看该作者

多谢楼上和楼上的楼上指点。

00 0 XXXXX :组优先级0,次优先级0
00 1 XXXXX :组优先级0,次优先级1

01 0 XXXXX :组优先级1,次优先级0
01 1 XXXXX :组优先级1,次优先级1

10 0 XXXXX :组优先级2,次优先级0
10 1 XXXXX :组优先级2,次优先级1

11 0 XXXXX :组优先级3,次优先级0
11 1 XXXXX :组优先级3,次优先级1

1.综合起来是00 0 XXXXX优先级最高,11 1 XXXXX优先级最低??
2.如果用要设置优先级分组是NVIC_APINT_PRIGROUP_2_6,设置systick优先级为组优先级3,次优先级1,用流明的库函数怎么实现?

使用特权

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

本版积分规则

109

主题

229

帖子

0

粉丝