发新帖我要提问
12
返回列表
打印
[STM32F1]

关于stm32中断里面嵌套中断的遇到的奇葩现象(原因从12楼看

[复制链接]
楼主: 摩天轮1111
手机看帖
扫描二维码
随时随地手机跟帖
21
摩天轮1111|  楼主 | 2015-8-7 14:35 | 只看该作者 回帖奖励 |倒序浏览
caosix 发表于 2015-8-7 10:41
这才是 正确的 。。。

中断 服务 只负责 【登记 一个 事件 或者 变量】

请注意我帖子的核心思想:
现象:我本设置了systick中断优先级最高,但是在EXTI1中断内部发生systick中断之后,却无法进入systick中断服务函数去执行,
处理:我探寻了各种可能的原因,想了各种可能导致的原因,最后发现了是systick的中断优先级的设置不是和EXTI用同一个函数设置,也就是我本以为我systick设置了最高优先级,实际上没有,才导致了我程序出现了和我预想的不一样的现象。
提示:回帖也请认真看别人的发帖内容,扫两眼,主观大篇长论,(就因为中断里面用延时了?呵呵,我是用这个延时是为了试验优先级设置这个问题,也就是如果我systick优先级低就执行不出来结果,如果我systick优先级高于EXTI就会出结果,这是我这个实验的初衷)不仔细阅读,妄下评论,是一种不尊敬,(换句话说,就是没法和你聊,你根本不会理会别人的思想,太自我,还聊什么呢)

使用特权

评论回复
22
摩天轮1111|  楼主 | 2015-8-7 14:39 | 只看该作者
本帖最后由 摩天轮1111 于 2015-8-7 21:15 编辑
sjnh 发表于 2015-8-7 14:31
不是你找到了问题,使用了其它方**好避免了
中断里用:while(flag),flag要用volatile定义 ...

我的理解是和flag无关的,我这个flag是全局变量,它并不是寄存器的某一位表示的值,他是个变量,通过中断服务函数来改变他的值,不应该定义成volatile,因为不存在“不能优化”,“flag是实时的”等等的问题,定义volatile显然也不会有问题,但是我感觉这并不是volatile的用途,不然你可以试试看,,

使用特权

评论回复
23
zchong| | 2015-8-9 16:15 | 只看该作者
如果是我,我就用IO高低电平通过示波器来观察嵌套情况,比较直观。
中断优先级,首先搞清楚抢占优先级和子优先级的概念,也就是优先级分组
之后就是正确设置中断优先级,楼主已经发现了内核的中断优先级和外设的中断优先级设置的寄存器是不一样的

使用特权

评论回复
24
kamen588| | 2015-8-9 17:20 | 只看该作者
.楼主,你前面的解释我看的一头雾水,systick属于内核中断,他的优先级设定不是常规的设置NVIC

使用特权

评论回复
25
摩天轮1111|  楼主 | 2015-8-10 12:06 | 只看该作者
kamen588 发表于 2015-8-9 17:20
.楼主,你前面的解释我看的一头雾水,systick属于内核中断,他的优先级设定不是常规的设置NVIC ...

前面的解释是错误的,我后面说了,最后给的解释,就是你说的这样的

使用特权

评论回复
26
wuqingfan| | 2015-9-15 13:57 | 只看该作者
mark

使用特权

评论回复
27
axc| | 2016-2-19 23:40 | 只看该作者
楼主高手,关于SYS的中断优先级我也是郁闷了好久,看到楼主这个帖子后,完全明白了,楼主的探究精神值得我们学习,楼主把知识拿出来分享的精神也值得我们学习,拜谢楼主又让我解决了一个疑惑。

使用特权

评论回复
28
axc| | 2016-2-19 23:44 | 只看该作者
楼主能否赏个QQ号?

使用特权

评论回复
29
summy0633| | 2016-3-24 11:22 | 只看该作者
谢谢了。楼主!我也遇到你这个问题了!

使用特权

评论回复
30
liuyuxiier| | 2016-4-28 15:33 | 只看该作者
中断里不是不可以用延时,只是不建议这样做。另外个人认为,不仅仅是中断不建议用延时,其他地方也尽量能少用就少用,毕竟延时是在空耗CPU,应该省下CPU的时间去做别的任务。

使用特权

评论回复
31
o(╯□╰)o| | 2016-9-10 14:14 | 只看该作者
为什么我改了优先级为0还是不行,有没有和我一样的?求解答

使用特权

评论回复
32
w542964028| | 2018-8-8 20:47 | 只看该作者
那问题又来了,STM32固件库里默认设置成15的用意是什么呢?让其他中断都可以抢占系统时钟?

使用特权

评论回复
33
john_lee| | 2018-8-8 23:00 | 只看该作者
w542964028 发表于 2018-8-8 20:47
那问题又来了,STM32固件库里默认设置成15的用意是什么呢?让其他中断都可以抢占系统时钟? ...

是的,在绝大多数应用场景中,systick 的优先级比其它中断都低。

使用特权

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

本版积分规则