星星博客 »  > 

单片机重要部分---中断

1,通俗理解 就是正在做A任务,突然一个紧急B任务,此刻首先暂停原先正在进行的A任务,先处理完成紧急B任务,回过头再去执行。

2,多任务同时执行的时候就要考虑到中断的优先级,不然就冲突了,就是中断干起架来。

3,响应优先级
(1)先响应优先级高的中断请求,再响应优先级低的中断请求。
(2)如果一个中断请求己被响应,同级的其他中断请求将被禁止。
(3)如果同级的多个中断请求同时出现,CPU则按单片机内部的自然优先级顺序响应各中断请求。
单片机内部自然优先级顺序(由高到低)为:外部中断0→定时器0中断→外部中断l→定时器1中断→串行接口中断。

4,处理中断中再有中断进来
当进入低优先级中断中执行时,如又发生了高优先级的中断,则立刻进入高优先级中断执行,处理完高优先级级中断后,再返回处理低优先级中断,这个过程就叫做中断嵌套,也称为抢占。
所以抢占优先级的概念就是,优先级高的中断可以打断优先级低的中断的执行,从而形成嵌套。当然反过来,优先级低的中断是不能打断优先级高的中断的。
那么既然有抢占优先级,自然就也有非抢占优先级了,也称为固有优先级。在中断优先级的编号中,一般都是数字越小优先级越高在这里插入图片描述

**5.线程的概念:**线程是操作系统能够进行运算调度的最小单位,被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
单线程(大部分单片机)::单线程在程序执行时,所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行。
**多线程:**线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位,而多线程就是指从软件或者硬件上实现多个线程并发执行的技术,具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。

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引脚检测到了跳变沿,接着执行外部中断任务。主要执行由外部因素影响的任务。属于片外中断。
  串行口发送或接受中断是在串行口有接收到数据执行的中断任务。主要接收串行口的数据。属于片内中断。

相关文章