OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7878|回复: 9

一直不明白NVIC->IP[x]该怎样设置

[复制链接]

2

主题

15

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-8-11
在线时间
0 小时
发表于 2015-1-26 19:27:39 | 显示全部楼层 |阅读模式
5金钱
如题:小弟看到USART的时候,例程里面是这样设置的:

SCB‐>AIRCR = 0x05FA0000 | 0x0400;

NVIC‐>IP[39] = 0xf0; //最低抢占优先级,最低响应优先级 1111

我就不明白为什么要这样设置,或者说这样设置抢占优先级与响应优先级是怎样分配的.第一句知道怎么回事,但是第二句就不会了,希望大家帮小弟解决~

最佳答案

查看完整内容[请看2#楼]

回复【3楼】玉洋子: --------------------------------- NVIC->IP[39] = 0XF0; 到底抢占、子优先级各占多少位,是由中断分组决定的。 不同分组,结果就不一样。 这个在我们教程有详细介绍
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-26 19:27:40 | 显示全部楼层
回复【3楼】玉洋子:
---------------------------------
NVIC->IP[39] = 0XF0;
到底抢占、子优先级各占多少位,是由中断分组决定的。
不同分组,结果就不一样。
这个在我们教程有详细介绍
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-26 19:27:40 | 显示全部楼层
那就好说了,.看我们代码注释:
4,的话,说明4个位全是抢占优先级,不存在子优先级.
[mw_shl_code=c,true]//设置NVIC //NVIC_PreemptionPriority:抢占优先级 //NVIC_SubPriority :响应优先级 //NVIC_Channel :中断编号 //NVIC_Group :中断分组 0~4 //注意优先级不能超过设定的组的范围!否则会有意想不到的错误 //组划分: //组0:0位抢占优先级,4位响应优先级 //组1:1位抢占优先级,3位响应优先级 //组2:2位抢占优先级,2位响应优先级 //组3:3位抢占优先级,1位响应优先级 //组4:4位抢占优先级,0位响应优先级 //NVIC_SubPriority和NVIC_PreemptionPriority的原则是,数值越小,越优先 void MY_NVIC_Init(u8 NVIC_PreemptionPriority,u8 NVIC_SubPriority,u8 NVIC_Channel,u8 NVIC_Group) { u32 temp; MY_NVIC_PriorityGroupConfig(NVIC_Group);//设置分组 temp=NVIC_PreemptionPriority<<(4-NVIC_Group); temp|=NVIC_SubPriority&(0x0f>>NVIC_Group); temp&=0xf; //取低四位 NVIC->ISER[NVIC_Channel/32]|=(1<<NVIC_Channel%32);//使能中断位(要清除的话,相反操作就OK) NVIC->IP[NVIC_Channel]|=temp<<4; //设置响应优先级和抢断优先级 } [/mw_shl_code]

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11546
金钱
11546
注册时间
2014-4-1
在线时间
1315 小时
发表于 2015-1-26 20:23:30 | 显示全部楼层

给你传本书,看 167 页,Interrupt Priority Registers 的描述。
这一部分,在STM32的手册上根本没有。



Cortex-CM3 Technical Reference Manual.pdf

2.35 MB, 下载次数: 633

回复

使用道具 举报

2

主题

15

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-8-11
在线时间
0 小时
 楼主| 发表于 2015-1-26 21:10:19 | 显示全部楼层
我知道SCB的[10:8]是设置中断组的,我是设置成Group 4的,现在的问题是
NVIC->IP[39] = 0XF0;
上面这句不理解:抢占式优先级是多少,响应式优先级又是多少?
难道说[7:5] = 11 把抢占式设为最低的,[4] = 1也是吧响应式设为最低的?

回复

使用道具 举报

2

主题

15

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-8-11
在线时间
0 小时
 楼主| 发表于 2015-1-27 12:27:07 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥,楼上的理解对吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-28 00:03:49 | 显示全部楼层
回复【5楼】玉洋子:
---------------------------------
我不用库函数,不知道你的group4,是不是和我寄存器的分组4一致哦.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

15

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-8-11
在线时间
0 小时
 楼主| 发表于 2015-1-28 10:28:42 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
是一致的,谢原子哥~
回复

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2019-6-16
在线时间
18 小时
发表于 2019-7-3 07:43:26 | 显示全部楼层
xuande 发表于 2015-1-26 20:23
给你传本书,看 167 页,Interrupt Priority Registers 的描述。
这一部分,在STM32的手册上根本没有。
...

谢谢分享,
回复

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2019-6-16
在线时间
18 小时
发表于 2019-7-3 07:48:00 | 显示全部楼层
好问题,同样困扰在这,看了解答后,感觉思路理顺了,谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-11 07:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表