OpenEdv-开源电子网

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

为什么要把串口中断优先级设置在NVIC中断分组2

[复制链接]

3

主题

9

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-3-26
在线时间
0 小时
发表于 2014-3-26 14:04:42 | 显示全部楼层 |阅读模式
请问例程上为什么要把串口中断优先级设置在NVIC中断分组2
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2014-3-27 10:57:35 | 显示全部楼层
NVIC: M3内核允许8bit做优先级分组设置,而STM32只有4bit可以设置。
AIRCR寄存器的4个位的分组方式如下:
第0组:所有4位用于指定响应优先级
第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级
第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级
第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级
第4组:所有4位用于指定抢占式优先级
例:定义为第二组,抢占式优先级2bit,响应式优先级2bit,2bit共可有4种状态,也就是总共能设置4*4=16个中断优先级。
定义为第三组,抢占式优先级3bit,响应式优先级1bit,也就是总共能设置8*2=16个中断优先级。
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 2 反对 0

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-3-26
在线时间
0 小时
 楼主| 发表于 2014-3-26 14:12:36 | 显示全部楼层
为什么外部中断也是设置在分组2呢,我设在分组1不行吗,分组3不行吗
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-3-26 14:30:31 | 显示全部楼层
都可以
回复 支持 反对

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-3-26
在线时间
0 小时
 楼主| 发表于 2014-3-26 18:51:24 | 显示全部楼层
回复【3楼】Badu_Space:
---------------------------------
是不是设置哪一组都可以,就是开中断的话一定要设置,是这个意思吗
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-3-27 10:52:18 | 显示全部楼层
你看下数据手册,复位有个默认值的,具体我也不是很记得,呵呵,应为我用库函数比较多,寄存器比较少,呵呵
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2013-12-4
在线时间
0 小时
发表于 2014-7-31 09:12:55 | 显示全部楼层
为什么要分组呢?还是不明白,分组是为了方便什么?
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2014-7-31 11:48:24 | 显示全部楼层
回复【7楼】hillright:
---------------------------------
我觉得可能是易于程序员查看代码吧,比如把串口1、2、3分在同一组,把SPI1、2、3分在同一组,看起来比较直观。
实际上分不分组都能实现同一种结果。
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

28

主题

1489

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1656
金钱
1656
注册时间
2013-7-24
在线时间
1 小时
发表于 2014-7-31 12:02:07 | 显示全部楼层
通过优先级保证性能,对时间不敏感的系统不明显,但对于时间严格的系统,比如得用示波器看响应速度时,就很清楚了。
于20150522停用该账号:http://www.microstar.club
回复 支持 反对

使用道具 举报

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2015-10-28
在线时间
10 小时
发表于 2015-11-3 14:56:02 | 显示全部楼层
回复【6楼】feilusia:
---------------------------------
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//串口1 中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//抢占优先级3
NVIC_InitStructure.NVIC_IRQChannelSubPriority =3; //子优先级3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
请问这块优先级为什么要设置为3呢? 那12分别是什么?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-11-3 21:19:41 | 显示全部楼层
例程设置分组2,这样是为了更好的给大家展示STM32的中断优先级而已.
这样子优先级,强制优先级,都有用到.
方便学习.

不过,楼主不喜欢的话,自己是可以设置其他分组的..
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

81

主题

270

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
452
金钱
452
注册时间
2014-8-11
在线时间
87 小时
发表于 2015-12-8 01:35:08 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
学习了
我是一只菜鸟,但我会大鹏展翅
回复 支持 反对

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2016-2-19
在线时间
6 小时
发表于 2016-2-24 18:17:39 | 显示全部楼层
正点原子 发表于 2015-11-3 21:19
例程设置分组2,这样是为了更好的给大家展示STM32的中断优先级而已.
这样子优先级,强制优先级,都有用到.
方 ...

所以设置中断优先级分组的意义只是在于:将4个位进行划分,分配那些位用于指定抢占优先级、哪些位用于指定响应优先级。是这样吗?
回复 支持 反对

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-2-24 19:14:51 | 显示全部楼层
奔跑的STM32 发表于 2016-2-24 18:17
所以设置中断优先级分组的意义只是在于:将4个位进行划分,分配那些位用于指定抢占优先级、哪些位用于指 ...

NVIC,支持抢占和排队,设置这个组的是为了处理多个中断同时到来该如何仲裁,这一点在使命-安全类系统中必须考虑好,恰当地设置可提高系统的健壮性。

我为了偷懒,大部分时候使用中断只是Enable一下它,没管优先级balabala的,这些中断迟一些对我的程序影响并不大。。
坚决不用寄存器,拒绝重复造轮子。
回复 支持 反对

使用道具 举报

354

主题

1475

帖子

12

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
8096
金钱
8096
注册时间
2015-10-15
在线时间
2919 小时
发表于 2016-2-24 19:15:47 | 显示全部楼层
奔跑的STM32 发表于 2016-2-24 10:17
所以设置中断优先级分组的意义只是在于:将4个位进行划分,分配那些位用于指定抢占优先级、哪些位用于指 ...

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

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 22:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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