OpenEdv-开源电子网

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

关于中断嵌套函数执行的问题

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2022-7-23
在线时间
0 小时
发表于 2022-8-20 12:05:57 | 显示全部楼层 |阅读模式
我遇到了一个问题:
按照中断优先级来说,中断的执行会先比较“抢占优先级”,如果前者相同再比较“子优先级”,如果“子优先级”也相同在比较各自的“序号”。
那么如果一个中断函数执行时,该中断又被触发了,两者的优先级都是相同的,此时该如何执行呢?

我了解到的一种说法是虽然两者的优先级相同,但是还是会发生“中断的嵌套”,即前一个同优先级的中断会被后一个中断打断。

如果是这样的话,对于按照一定时间进入一次中断函数的中断一定是无法执行的了,因为该中断会被无限的嵌套下去。

但是如果在以下的使用情景中,中断嵌套还会很大的影响程序的运行吗?
即:通过IO口检测外部的上升沿,进而触发中断,而该上升沿由按键按下产生,按键按下时会产生抖动,如果不进行消抖的话,可能会导致单片机的IO口接收到很多的上升沿信号,进而产生多个中断,但是该种中断的数量是有限的,中断函数也比较简单(这里中断函数的内容即使执行多次对程序也无任何不良影响),所以此时即使产生了多个中断的嵌套,单片机应该也可以快速的将这些嵌套处理完毕,即此时可以将中断嵌套的影响忽略不计。

请问我上面的想法对吗?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

89

帖子

0

精华

高级会员

Rank: 4

积分
842
金钱
842
注册时间
2020-6-12
在线时间
303 小时
发表于 2022-8-20 17:12:06 | 显示全部楼层
子优先级相同, 中断执行过程中又被中断触发 必须要等到该中断程序执行完后  才能响应下一次中断。   至于你描述的场景  按键通常不会用IO中断去做。  在定时循环里读按键电平即可  顺便做一些消抖处理。
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 07:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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