单片机中断的优先级
mouser 2022-01-06

在讲中断产生背景的时候,我们仅仅讲了看电视和烧水的例子,但是实际生活当中还有更复杂的,比如我正在看电视,这个时候来电话了,我要进入接电话的“中断”程序当中去,就在接电话的同时,听到了水开的声音,水开的“中断”也发生了,我就必须要放下手上的电话,先把煤气关掉,然后再回来听电话,最后听完了电话再看电视,这里就产生了一个优先级的问题。

“”

还有一种情况,我们在看电视的时候,听到了水开的声音,水开的“中断”发生了,我们要进入关煤气的“中断”程序当中。而在关煤气的同时,电话铃声响了,而这个时候,我们的处理方式是先把煤气关掉,再去接听电话,最后再看电视。

从这两个过程中,我们可以得到一个结论,就是最紧急的事情一旦发生,我们不管当时处在哪个“程序”当中,都必须先去处理最紧急的事情,处理完毕后再去解决其它事情。

在我们的单片机程序当中有时候也是这样的,有一般紧急的中断,有特别紧急的中断,这取决于具体的系统设计,并且涉及到中断优先级和中断嵌套的概念。在本文中我们先简单介绍一下相关寄存器,不做例程说明。

中断优先级有两种,一种是抢占优先级,一种是固有优先级,先介绍抢占优先级。

表1:中断优先级寄存器的位分配(地址0xB8、可位寻址)

“”

表2:中断优先级寄存器的位描述

“”

这个寄存器的每一位,表示对应中断的抢占优先级,每一位的复位值都是0,当我们把某一位设置为1的时候,这一位的优先级就比其它位的优先级高了。

比如我们设置了PT0位为1后,当单片机在主循环或者任何其它中断程序中执行时,一旦定时器T0发生中断,作为更高的优先级,程序马上就会跑到T0的中断程序中来执行。

反过来,当单片机正在T0中断程序中执行时,如果有其它中断发生了,还是会继续执行T0中断程序,直到把T0中的中断程序执行完毕以后,才会去执行其它中断程序。

当进入低优先级中断中执行时,如又发生了高优先级的中断,则立刻进入高优先中断执行,处理完高优先级级中断后,再回去处理低优先级中断,这个过程就叫做中断嵌套,也称为抢占。

所以抢占优先级的概念就是,优先级高的中断可以打断优先级低的中断的执行,从而形成嵌套。当然反过来,优先级低的中断不能打断优先级高的中断。

那么既然有抢占优先级,自然也就有非抢占优先级了,也称为固有优先级。

请注意,在中断优先级的编号中,一般都是数字越小优先级越高。

我们知道一共有1~6共6级的优先级,这里的优先级与抢占优先级的一个不同点就是,它不具有抢占的特性,也就是说即使在低优先级中断执行过程中又发生了高优先级的中断,那么这个高优先级的中断也只能等到低优先级中断执行完后才能得到响应。

既然不能抢占,那么这个优先级有什么用呢?答案是多个中断同时存在时的仲裁。

比如说有多个中断同时发生了,当然实际上发生这种情况的概率很低,但另外一种情况就常见的多了,那就是出于某种原因我们暂时关闭了总中断,即EA=0,执行完一段代码后又重新使能了总中断,即EA=1,那么在这段时间里就很可能有多个中断都发生了,但因为总中断是关闭的,所以它们当时都得不到响应,而当总中断再次使能后,它们就会在同时请求响应了。很明显,这时也必须有个先后顺序才行,这就是非抢占优先级的作用了。谁优先级最高先响应谁,然后按编号排队,依次得到响应。

抢占优先级和非抢占优先级的协同,可以使单片机中断系统有条不紊地工作,既不会无休止的嵌套,又可以保证必要时紧急任务得到优先处理。

在后续的学习过程中,中断系统会与我们如影随形,处处都有它的身影,随着学习的深入,相信你对它的理解也会更加的深入。 

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
热门推荐
  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
  • 51单片机:LCD1602的驱动程序

    [导读] #include#include "./delay/delay.h"#define LCDPORT P0#define LCD_WRITE_DATA

    2小时前
  • 单片机接口的11项常识

    1、MCU有串口外设的话,要加上电平转换芯片(如MAX232、SP3485就是RS232和RS485接口)。2、RS485采用差分信号负逻辑,+2V~+6V表示

    前天
  • 多个16×16点阵LED模块组成显示屏的实现

    LED显示屏广泛应用于工矿企业、学校、商场、店铺、公共场所等进行图文显示,广告宣传,信息发布。本文设计一种由4个16×16点阵LED模块组成的显示屏,由单片机作

    01-24
  • 一个单片机键盘处理程序的基本思路

    1、键盘与的连接图3键盘连接图4单片机与键盘接口图2、通过1/0口连接。将每个按钮的一端接到单片机的I/O口,另一端接地,这是最简单的办法,如图3所示是实验板上

    01-24
  • 看门狗电路应用中的一些基本技巧和注意事项

    在MCU、DSP等应用中,广泛使用的看门狗(WatchDog)电路,又称电压监控器电路。本文总结了看门狗电路应用中的一些基本技巧和注意事项。1、系统电压选择看门

    01-21
  • 单片机地址空间和堆栈

    data—可寻址片内ram0x00-0x7fbdata—可位寻址片内ramidata—可寻址片内ram,允许访问全部内部ram0x00-0xffpadata—分

    01-20
  • 嵌入式供水智能控制系统及模糊PID控制

      引言   目前的小区和楼宇供水系统普遍采用基于变频调速技术的恒压供水系统,与传统的恒速供水系统相比取得了可观的节能效果。但由于供水系统的泵出口压力

    01-20
  • 影响单片机功耗的几个主要因素

    最近一周一直在做pic单片机功耗问题。由于项目使用电池供电,所以功耗问题显得非常重要。根据数据手册以及网络上的资料,影响单片机功耗主要由以下几个因素:1:所有I

    01-19
  • 单片机实现延时的两种常用方法

    [导读]实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环

    01-18
  • AVR单片机毫秒、微秒级延时程序

    [导读]AVR单片机延时程序:1.毫秒级的延时 延时1ms;void delay_1ms(void){unsigned int i;for(i=1;i<(uns

    01-18
  • 拿到一个单片机任务,如何入手写程序

    [导读]手把手教你写程序:内容:从最简单的程序入手,手把手教你写程序,让同学们拿到一个复杂的程序或者任务,能快速找到切入点,写出程序,再在此基础上优化程序。当拿

    01-18
  • 工程师对8位MCU的一些误解

    近年来,随着工艺与IP的逐渐成熟,32位的MCU增长迅速,风头之劲乃至16位的MCU基本上被跳过了。现在说嵌入式MCU,要么就是8位,要么就是32位,16位的M

    01-18
下载排行榜
更多
广告
X
广告