打印
[应用相关]

单片机_中断的理解

[复制链接]
1345|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
carpsnow|  楼主 | 2022-4-22 16:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式



理论

引入—什么是中断?
  通俗的说:比如我正在写博客,老板突然给我一个任务,我暂停的写博客,转而把老板布置的任务完成之后,再继续写博客,这个过程就可以理解成中断。
  百度引用:‘中断是指CPU在处理某一件事A时,发生了另一件事B,请求CPU迅速去处理(这个过程是“中断发生”);此时,CPU暂时停止当前的A事件(这个过程是“中断响应”),转去处理B事件(这个过程是“中断服务”);待CPU将B事件处理完毕后,再回到事件A被中断打断的地方继续处理事件A(这个过程是“中断返回”)。这一过程,称之为中断。’

深入理解_线程的概念
  我认为要想理解中断的概念,作为一个工科生,还应该理解线程的概念
  线程:程序运行流的最小单元,一个程序是有一个或多个线程组成。
  你可以理解成线程就是单片机执行的一个任务,比如,流水灯、读取发送某一个传感器的数据。但是我们平时写的单片机程序一般就是单线程的,就是单片机一个
  多线程编程:如果你还是个小白,可以简单的理解我们使用的简单的单片机就只能执行一个任务,但是后面通过系统的学习你还会知道,就算是单线程的话,单片机也可以分时“执行多个任务”,这里是借助了计算机实现多线程的编程方法(比如一边播放视频一边听音乐,它可以先执行听音乐的任务,当视频的下一帧到,它先把音乐的任务暂停,保存这个任务所有的变量,执行播放视频到任务,然后再把播放视频的任务暂停,执行播放音乐的任务,不断地循环下去,另外你还要知道单片机的执行速度是非常快滴,快到你根本分辨不出来中间有卡顿。所以就会认为任务同时做了两件事)
  这里可能有很多人想,现在的很多电子设备都是几核几线程的(多核、线程、进程、多线程的理解这里就不多讲了),多个CPU实现了并行运行方式,属于真正的多线程,但是多个CPU的控制方案成本几乎成倍的增加,而且要是实现多个CPU之间的通讯花费的实践较长,并且干扰影响较大。

中断源、中断任务、中断返回:
  总结起来,就是你需要知道中断就是单片机处理任务A时,发生了触发中断的条件停下来执行另一个任务B,触发中断的条件就属于中断源,任务B就是中断任务(中断服务函数)。当中断任务执行完成后中断返回,在回到任务A中断的地方继续处理任务A。

中断优先级
  为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。百度百科
  这里再举一个简单的例子:仍然是我正在写博客,老板给我发了一个任务A,但是同时老婆也给我一个任务B,两个任务同时到达,我该先执行哪一个呢?当然先执行老婆的任务B了,然后再执行老板的任务A,再完成之后在继续写我的博客。在这里执行老婆的任务B就比执行老板任务A的中断优先级级别高。但是我要是正在执行老婆B的任务,这个时候老板的任务A过来了,这个时候我会继续执行老婆的任务B,也是因为老板的任务A没有老婆B的任务优先级高,这里
老婆任务 > 老板任务 > 写博客任务
  所以多级中断的处理原则:当多级中断同时发生时,CPU按照由高到低的顺序响应。高级中断可以打断低级中断处理程序的运行,转而执行高级中断处理程序。当同级中断同时到时,则按位响应。

STM32的抢占优先级、响应优先级、NVIC 的优先级组
这里转自部分 https://blog.csdn.net/qlexcel/article/details/78841296
  STM32 的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,其属性编号越小,表明它的优先级别越高。
  抢占属性:是指打断其他中断的属性,即因为具有这个属性会出现嵌套中断(在执行中断服务函数A 的过程中被中断B 打断,执行完中断服务函数B 再继续执行中断服务函数A),抢占属性由NVIC_IRQChannelPreemptionPriority 的参数配置。
  响应属性:应用在抢占属性相同的情况下,当两个中断向量的抢占优先级相同时,如果两个中断同时到达, 则先处理响应优先级高的中断, 响应属性由NVIC_IRQChannelSubPriority 参数配置。
  NVIC 的优先级组:在配置优先级的时候,还要注意一个很重要的问题,即中断种类的数量。NVIC 只可以配置16 种中断向量的优先级,也就是说,抢占优先级和响应优先级的数量由一个4 位的数字来决定,把这个4 位数字的位数分配成抢占优先级部分和响应优先级部分。

定时器中断、外部中断、串行口发送或接受中断
  这些中断事件主要根据中断源不同划分。
  定时器中断是你需要定时的时间A ms到了,会产生定时器中断,执行A ms后的中断内容。主要执行定时完成的任务。属于片内中断。
  外部中断是中断源来自单片机的外部,比如61单片机的P3.2引脚检测到了跳变沿,接着执行外部中断任务。主要执行由外部因素影响的任务。属于片外中断。
  串行口发送或接受中断是在串行口有接收到数据执行的中断任务。主要接收串行口的数据。属于片内中断。


使用特权

评论回复
沙发
tail066| | 2022-4-24 16:51 | 只看该作者
通俗的说,很形象,便于理解

使用特权

评论回复
板凳
p0gon9y| | 2022-4-29 13:42 | 只看该作者
中断就是到时候就做中断里的事情

使用特权

评论回复
地板
d1ng2x| | 2022-4-29 14:15 | 只看该作者
中断就是打断你现在做的事情,然后去做级别更高的事情

使用特权

评论回复
5
y1n9an| | 2022-4-29 14:32 | 只看该作者
就跟老板和同事找你做事一样

使用特权

评论回复
6
l1uyn9b| | 2022-4-29 14:54 | 只看该作者
中断可以理解成线程,但是线程给我的感觉是中断的一种

使用特权

评论回复
7
t1ngus4| | 2022-4-29 15:32 | 只看该作者
MCU一般都是中断,线程好像是并发的那种

使用特权

评论回复
8
q1d0mnx| | 2022-4-29 16:09 | 只看该作者
中断是只能同一时间做同一种事情,线程是同一时间可以做多个事情

使用特权

评论回复
9
kaif2n9j| | 2022-4-30 09:20 | 只看该作者
这个属实一个人理解一个样,但是都能用

使用特权

评论回复
10
tax2r6c| | 2022-4-30 10:17 | 只看该作者
中断来说就是打断现在的事情,处理级别高的事情

使用特权

评论回复
11
b5z1giu| | 2022-4-30 12:33 | 只看该作者
在开发MCU来说,中断用的还是比较多的

使用特权

评论回复
12
lix1yr| | 2022-4-30 13:05 | 只看该作者
中断就是打断啊,我觉得是这样,打断现在的事情

使用特权

评论回复
13
Carina卡| | 2022-5-5 16:03 | 只看该作者
中断就是在你正常运行呢,突然插进来一个任务,需要先执行新任务

使用特权

评论回复
14
Annie556| | 2022-5-5 17:11 | 只看该作者
中断其实挺好理解的

使用特权

评论回复
15
Betty996| | 2022-5-5 17:25 | 只看该作者
线程来说,就是并行吧,中断还是串行

使用特权

评论回复
16
alxd| | 2022-5-5 19:02 | 只看该作者
讲的挺好的,中断这么理解没啥问题

使用特权

评论回复
17
caigang13| | 2022-5-5 20:55 | 只看该作者
中断好理解,没毛病啊。

使用特权

评论回复
18
Charlene沙| | 2022-5-6 12:46 | 只看该作者
线程是不是跑系统才能用到,不然MCU都是单线程的吧

使用特权

评论回复
19
Betty1299| | 2022-5-6 14:02 | 只看该作者
线程属实不太理解,但是我觉得他就是不打断其他的任务,而新开了一个任务服务

使用特权

评论回复
20
Estelle1999| | 2022-5-6 14:20 | 只看该作者
中断用的比较多,其实多说一嘴,尽量不要在中断里做耗时的事情

使用特权

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

本版积分规则

77

主题

456

帖子

1

粉丝