找回密码
 立即注册
查看: 504|回复: 6

小知识:中断函数执行过程中触发中断的情况

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:247
  • 最近打卡:2025-02-25 19:02:50

13

主题

198

回帖

1175

积分

金牌会员

积分
1175
发表于 2024-1-31 15:19:53 | 显示全部楼层 |阅读模式

51单片机中,高优先级的中断能打断低优先级的中断。
但同级中断是不能打断同级中断的!无论该中断函数有多长,在执行到一半这个中断又发生了,还是要等到该中断函数执行完毕,并再执行了一条主程序指令后才会再次进入该中断。
若低优先级中断服务程序中恰好修改了该中断为高优先级,那么如果该中断函数比较长,执行到一半又触发了这个中断,则该中断函数就会被重新从头开始执行(中断嵌套)。
这是因为除串口中断以外的其他中断,在 CPU 响应该中断,程序转入该中断函数前就已经将该中断的中断标志清零了。
另外,51的串口中断比较特别,因为需要软件清除串口中断标志,所以只要在未清串口中断标志前,是不会发生上述这样的中断嵌套的。

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:436
  • 最近打卡:2025-05-06 08:38:18

33

主题

2355

回帖

4872

积分

论坛元老

积分
4872
发表于 2024-1-31 16:07:51 | 显示全部楼层
对于第三行的描述比较在意,,,这个  则该中断函数就会被重新从头开始执行(中断嵌套)。   
那重新执行了中断函数之后,,还会跳回被自己打断的地方么?
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:247
  • 最近打卡:2025-02-25 19:02:50

13

主题

198

回帖

1175

积分

金牌会员

积分
1175
发表于 2024-1-31 18:22:41 | 显示全部楼层
我也不太清除,坐等大神来帮忙解答下疑惑
中断的实现是不是把当前执行的代码地址入栈,然后执行中断函数,中断完成后再出栈接着执行?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:525
  • 最近打卡:2025-05-06 07:51:34

109

主题

1909

回帖

5298

积分

论坛元老

积分
5298
发表于 2024-1-31 18:59:07 | 显示全部楼层
51单片机中,高优先级的中断能打断低优先级的中断
-----也就是说,如果不想在执行中断函数的时候被别的中断所打断,就必须把当前中断的优先级设置为最高。这样说对吗?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:59
  • 最近打卡:2025-05-06 09:22:11

718

主题

1万

回帖

1万

积分

管理员

积分
15676
发表于 2024-1-31 19:52:32 | 显示全部楼层
截图202401311952286742.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:59
  • 最近打卡:2025-05-06 09:22:11

718

主题

1万

回帖

1万

积分

管理员

积分
15676
发表于 2024-1-31 19:53:02 | 显示全部楼层
截图202401311952598082.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:59
  • 最近打卡:2025-05-06 09:22:11

718

主题

1万

回帖

1万

积分

管理员

积分
15676
发表于 2024-1-31 19:53:42 | 显示全部楼层
截图202401311953291947.jpg
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-7 03:26 , Processed in 0.117612 second(s), 90 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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