发新帖本帖赏金 2.00元(功能说明)我要提问
返回列表
打印
[STM32F1]

【大家来讨论一下】【stm32中断嵌套以及中断优先级的问题】

[复制链接]
2934|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stm32F103如果并不配置响应优先级的话,但是抢占式优先级可以配置成16级。也就是说可以有16级优先级中断嵌套。那问题就来了啊,中断嵌套是发生在不同的中断服务函数之间的,16级的中断优先级,也就是说可以有16个中断响应函数。虽然我问这个问题有点脱离实际。但我想了一下,好像还真的没有16个独立的中断函数,比方说外部中断EXTII全部加起来可以有7个独立的中断响应函数,加上定时器的中断。怎么想也找不到16个中断响应函数啊。那么,这16个中断抢占式优先级是不是形同虚设的呢?

打赏榜单

21ic小管家 打赏了 2.00 元 2015-12-04

沙发
sjw1716094642| | 2015-12-3 13:44 | 只看该作者
楼主可别误导大众啊

用图说话。。







好像不止16个吧,有59个呢

使用特权

评论回复
评论
皈依 2015-12-3 21:45 回复TA
完美回答~ 
板凳
zhuotuzi| | 2015-12-3 14:37 | 只看该作者
不同系列,应该有不同的外设,中断一般都是外设产生的,所以吧,中断等级总数可能不同。

使用特权

评论回复
地板
970253146|  楼主 | 2015-12-3 15:45 | 只看该作者
本帖最后由 970253146 于 2015-12-3 16:05 编辑
sjw1716094642 发表于 2015-12-3 13:44
楼主可别误导大众啊

用图说话。。

中断优先级,如果忽略响应优先级的话真的就只能配置成16级。但我之前没了解到还有这么多。。。谢谢你

2111.png (65.42 KB )

2111.png

使用特权

评论回复
5
970253146|  楼主 | 2015-12-3 15:46 | 只看该作者
zhuotuzi 发表于 2015-12-3 14:37
不同系列,应该有不同的外设,中断一般都是外设产生的,所以吧,中断等级总数可能不同。 ...

这个倒是。

使用特权

评论回复
6
970253146|  楼主 | 2015-12-3 16:04 | 只看该作者
sjw1716094642 发表于 2015-12-3 13:44
楼主可别误导大众啊

用图说话。。

大哥啊,上面你那几张图都是可设置优先级的中断啊?有这么多,我都没了解过呢。你这学习得太深入太透彻了。

使用特权

评论回复
7
sjw1716094642| | 2015-12-3 16:23 | 只看该作者
970253146 发表于 2015-12-3 16:04
大哥啊,上面你那几张图都是可设置优先级的中断啊?有这么多,我都没了解过呢。你这学习得太深入太透彻了 ...

没那么厉害,不过我是学寄存器的,从一开始就与参考手册打交道,看的比较多

使用特权

评论回复
8
sjw1716094642| | 2015-12-3 16:25 | 只看该作者
zhuotuzi 发表于 2015-12-3 14:37
不同系列,应该有不同的外设,中断一般都是外设产生的,所以吧,中断等级总数可能不同。 ...

中断等级什么的都是一样的,不一样的是中断源和中断源数量不一样

使用特权

评论回复
9
皈依| | 2015-12-3 21:44 | 只看该作者
从隔壁论坛又跑到这里!好好看看资料,外部中断和中断不是一回事啊!不要误导大家

使用特权

评论回复
10
970253146|  楼主 | 2015-12-3 21:49 | 只看该作者
本帖最后由 970253146 于 2015-12-3 21:57 编辑
皈依 发表于 2015-12-3 21:44
从隔壁论坛又跑到这里!好好看看资料,外部中断和中断不是一回事啊!不要误导大家 ...

首先16级中断优先级,stm32的抢占优先级只能配置这么多,这个没问题吧。然后我帖子中说的是比如外部中断,是比如。而且外部中断怎么跟中断不是一回事?你有见到我说stm32的中断全部就是外部中断了吗?:(而且我是叫大家来讨论,不是叫大家来信我。

使用特权

评论回复
11
970253146|  楼主 | 2015-12-3 21:52 | 只看该作者
皈依 发表于 2015-12-3 21:44
从隔壁论坛又跑到这里!好好看看资料,外部中断和中断不是一回事啊!不要误导大家 ...

外部中断只是中断的其中一种,我想我帖子说得够清楚了吧,从一开始我强调的就是stm32的nvic中配置中断优先级的级数。我当然不希望误导大家,还是谢谢你的宝贵意见。

使用特权

评论回复
12
970253146|  楼主 | 2015-12-3 21:55 | 只看该作者
sjw1716094642 发表于 2015-12-3 16:25
中断等级什么的都是一样的,不一样的是中断源和中断源数量不一样

唉,又一位朋友说我误导人。大哥你看嘛,stm32中断确实忽略抢占优先级的话,抢占优先级最多能配置16个级。但经过你的提醒,stm32有50多个有对应中断处理函数的中断来源。要考虑这些函数的优先级(抢占)的话,最多只能考虑16个级。对嘛

使用特权

评论回复
13
皈依| | 2015-12-3 21:56 | 只看该作者
970253146 发表于 2015-12-3 21:52
外部中断只是中断的其中一种,我想我帖子说得够清楚了吧,从一开始我强调的就是stm32的nvic中配置中断优 ...

怪我 没仔细看帖~望原谅。
二楼正解,稍微大的实际应用中32的优先级管理也不是很够用。
不过同一个优先级可以配置多个,前提是要考虑不打断,不干涉。

使用特权

评论回复
14
皈依| | 2015-12-3 21:57 | 只看该作者
970253146 发表于 2015-12-3 21:52
外部中断只是中断的其中一种,我想我帖子说得够清楚了吧,从一开始我强调的就是stm32的nvic中配置中断优 ...

我的 没细看帖~望原谅。
二楼正解,稍微大的实际应用中32的优先级管理也不是很够用。
不过同一个优先级可以配置多个,前提是要考虑不互相打断,不同时中断

使用特权

评论回复
15
970253146|  楼主 | 2015-12-3 22:03 | 只看该作者
皈依 发表于 2015-12-3 21:56
怪我 没仔细看帖~望原谅。
二楼正解,稍微大的实际应用中32的优先级管理也不是很够用。
不过同一个优先 ...

很感谢你给我提的宝贵意见,是应该好好看看资料的,确实我的帖子也有问题,我用到的中断类型不多。所以我就想16级的优先级能用得完吗,经过上面那位朋友的图片。看到了确实有很多。。。。。我之前了解到stm32的可以不同优先级的中断对应同一个中断程序。你有听过这说法吗?那我就想哦,如果说AB中断对应同一个中断函数,而且AB的优先级不一样,那A中断跟B中断发生嵌套的时候,就造成中断函数的重入了。。。你觉得呢?

使用特权

评论回复
16
皈依| | 2015-12-3 22:10 | 只看该作者
970253146 发表于 2015-12-3 22:03
很感谢你给我提的宝贵意见,是应该好好看看资料的,确实我的帖子也有问题,我用到的中断类型不多。所以我 ...

你说的这个问题我遇到过。
举个例子:同样是EXTI9_5_IRQHandler中断,LINE5的抢占优先级为0,LINE6的抢占优先级为1.
初始化OK,不出问题。单独中断时也都OK。
但是当两个中断线对应的事件都发生时,LINE5是无法打断LINE6的,而且那个事件先发生就执行哪个。

使用特权

评论回复
17
970253146|  楼主 | 2015-12-3 22:40 | 只看该作者
皈依 发表于 2015-12-3 22:10
你说的这个问题我遇到过。
举个例子:同样是EXTI9_5_IRQHandler中断,LINE5的抢占优先级为0,LINE6的抢占 ...

这个我还没遇到过,我想过而已。EXIT9的话,那line5跟line6优先级不同且发生嵌套。是不会重入exit9的中断函数的对吧,line5优先级0,line6优先级1,但line5先发生,line6也打不断line5啊?:funk:

使用特权

评论回复
18
皈依| | 2015-12-4 08:43 | 只看该作者
970253146 发表于 2015-12-3 22:40
这个我还没遇到过,我想过而已。EXIT9的话,那line5跟line6优先级不同且发生嵌套。是不会重入exit9的中断 ...

0的优先级高于1,数值越小,优先级越高。
因为LINE5和LINE6对应的是同一个中断函数,因此不会有任何打断

使用特权

评论回复
发新帖 本帖赏金 2.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

93

主题

289

帖子

5

粉丝