中断杂谈

[复制链接]
查看1365 | 回复4 | 2023-9-16 17:10:03 | 显示全部楼层 |阅读模式
本帖最后由 WangChong 于 2023-9-16 17:13 编辑

中断
在单片机中,通常程序都是一直在主进程中循环执行,不会停止,无法感知外部的状态来进行实时性非常强的操作。在我们引入中断之前,让我们来看一个没有中断的例子:拿来扶手电梯来讲,在程序运行的时候。 电梯一直在运动的,但是如果现在出现了紧急情况。比如有个小孩卡在电梯里,那么我们肯定是想第一时间把电梯停下来。 但是由于这个电梯并没有中断系统。唯一能把电梯停下来的办法只有切断电源。但是切断电源这个操作有可能会花费很长的时候。此时小朋友就非常危险。


那么如果有了中断的话,当这个小朋友遇见危险的时候,我们可以第一时间按下电梯的急停按钮。此时在电梯还是通电的情况下,电梯停止了,那么当小朋友获救之后,我们可以将电梯复原到急停之前的状态。这就是中断。
而换一句话来讲, 中断就是你停下目前所作的事情,去做其他的事情,然后在其他事情做完之后重新回到你之前做的事情上来。
到此为止,中断的概念已经讲的非常清楚了。

中断优先级
通常而言,在单片机里都会提供很多种的中断资源。包括系统中断,定时器中断,串口中断和外部中断等等。 我们可以根据自己的业务场景来使用不同的中断函数配置。
可能又有人会说,那么如果现在很多个中断同时出现的话该怎么办呢?
比如说我现在正在写代码,突然有好多个美女要来给我捏捏肩,我应该选择哪一个呢? 那么此时就会出现一个中断优先级的概念。如果这么多中断都是同时的发生,那么中断优先级高的中断将会优先被触发。 其次则是优先级较低的中断。以此类推。

中断嵌套
还有一种情况是什么呢,此时有一个中断优先级较低的中断A已经被触发了,单片机正在处理中断A的中断方法。 那么此时有一个相对中断优先级较高的中断B也被触发了。但是由于中断B的优先级比中断A要高,此时单片机将不会再执行中断A的中断方法,将会优先执行中断B的中断方法。 当中断B的中断方法被执行完毕之后才会转头执行中断A的中断方法。 换一句话来说, 你现在正在写代码,突然有一个美女A来给你送水果, 于是你开开心心的在吃水果。 在你吃水果A的时候,美女B 来了,给你送了一个你更喜欢吃的水果。 于是你停下了吃水果A 开始吃水果B。 当水果B吃完了之后你才去吃水果A。
有一点需要注意的是,中断函数一般不要执行太过复杂的逻辑,也不要在中断函数内进行延时, 因为如果你的逻辑复杂或者延时较长的话,有可能当前的中断还没处理完,下一个中断又进来了!

希望能够以通俗的话,将深奥的知识进行简化。

回复

使用道具 举报

WangChong | 2023-9-16 17:17:21 | 显示全部楼层
评论一个不相关中断的, 都没有老哥用小安派上云吗? 要不要我出个教程?
回复 支持 反对

使用道具 举报

496199544 | 2023-9-17 08:52:44 | 显示全部楼层
可以,出个教程吧
回复 支持 反对

使用道具 举报

王乐乐 | 2023-9-17 09:44:27 | 显示全部楼层
打卡学习
回复

使用道具 举报

好运伴我左右 | 2023-9-17 10:00:06 来自手机 | 显示全部楼层
看看
回复

使用道具 举报

WangChong | 2023-9-17 12:23:49 | 显示全部楼层

共同学习
回复 支持 反对

使用道具 举报

WangChong | 2023-9-17 12:24:54 | 显示全部楼层
回复 支持 反对

使用道具 举报

genji | 2023-9-17 16:07:01 来自手机 | 显示全部楼层
打卡
回复

使用道具 举报

WangChong | 2023-9-17 18:40:19 | 显示全部楼层

共同学习
回复 支持 反对

使用道具 举报

WangChong | 2023-9-17 19:22:08 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则