跳转到主要内容

中断

大神带你玩转单片机:外部中断详解

cathy 提交于

今天开始我们正式进入中级阶段的学习:中断系统。

<strong>什么是中断</strong>

首先来讲一下什么是中断:当程序执行到某个地方时,发生了特殊的事件或请求,CPU暂停执行当前程序,转而去处理上述事件或请求,处理完毕后在返回断点继续执行当前程序。

用我们生活中的事情来举个例子。假如你正在吃饭(当前程序),突然接到了快递员的电话让你现在下去拿快递(中断请求),你回答:“好的”(中断响应),然后暂停吃饭下去拿快递(中断处理),拿完快递上来继续吃饭(执行完中断返回执行当前程序)。

<center><img src="http://mouser.eetrend.com/files/2020-02/博客/100047762-90842-1.png&quot; alt=“图1" width="600"></center><center><i>图1</i></center>

关于单片机中断的优先级,你想了解的都在这儿了!

cathy /

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

<center><img src="http://mouser.eetrend.com/files/2019-10/wen_zhang_/100045466-81920-1.pn…; alt=“” width="600"></center>

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

有效使用单片机外设功能:(4)中断功能

cathy 提交于

我们已经介绍了应用单片机的外设功能的结构和使用方法。本期我们介绍更有效地应用单片机而必须的外设功能——“中断功能”。

<strong>提高作业效率的“中断功能”指的是什么?</strong>

我们回顾一下本系列第二期的“定时器”篇中简单介绍过的“中断功能”概念。任何人都有过这样的经验,就是“将鸡蛋放进沸腾的热水中,直到鸡蛋煮熟的10分钟内要确认好几次时钟”的经历。在单片机的世界中也同样,在等待某种状态达成时,具有对对象进行定期检查的方法。例如,在等待向GPIO(通用I/O端口)的输入从0变为1时,程序可以一定的间隔来检查GPIO的状态。这种处理被称为“轮询”。

轮询虽然是一种了解状态变化的简单方法,但是如果检查的频度低(间隔长)就会错过变化,如果频度过高(间隔短),即使查也查不到变化“空耗”。由于轮询通过简单的程序便能完成处理,所以在掌握对象的变化频度时是有效的。但是,进行多次检查也会给单片机带来负荷,对功耗不利。

因此就要用到本期介绍的“中断功能”。产生中断时,CPU会暂时停止正在执行的任务,转而进行别的任务。也就是有别的任务“穿插”进来的意思(图1) 。当中途穿插进来的任务结束后,CPU再返回处理原来的任务。

【技术干货】单片机入门:中断

cathy 提交于

本连载讲解作为嵌入式系统开发技术人员所必需具备的单片机的基础知识。本期为最后一期,将为大家介绍在单片机控制系统中不可缺少的 处理方式--“中断”的基础知识。

<strong>“中断”与“轮询”</strong>

本期是单片机入门连载的最后一期。第1期我们学习了“单片机的基本构成”,第2期学习了“单片机的外围功能电路”,第3期学习了“单片机的编程语言和开发环境”,第4期学习了“单片机的外部外围功能电路控制”的基础知识。本期我们将说明在单片机编程过程中一定会遇到的、也是单片机控制中不可缺少的一种处理方式---“中断”。

“中断”处理并非单片机控制系统所特有的现象,在我们的日常生活中“中断”的例子也随处可见。让我们来看看身边的例子吧。比如尽管您知道今天有快递送到,但却不知道快递送来的具体时间,在这种情况下,也许您会选择坐在客厅里边看书,边等快递送来。在您看书其间,门铃响的时候就表明快递到了(有事件发生)。这就是“中断”的例子。

单片机中断寄存器知识点总结,讲的太详细了!

cathy /

<strong>单片机中断源</strong>

一般而言,MCS-51单片机有5个中断源,分别是:外部中断0、外部中断1、定时/计数器0中断、定时/计数器1中断、串行口发送或接受中断。

<strong>用到外部中断</strong>

EX0=1;//中断允许开关

IT0=0;//下降沿触发方式

EA=1;//总开关

<strong>用到定时/计数器中断</strong>

ET0=1;//启动计数器中断开关

EA=1;//总开关

//定时器的核心在这下面这段代码

TMOD=0x09;

TH0=0x0D8;

TL0=0x0F0;

TR0=1;//启动定时器

<strong>用到串口中断</strong>

EX1=1;//外部中断1分开关

IT1=1;//触发方式:下降沿

PX1=1;//设置为高优先级

//波特率配置,由定时器1的益处率决定

TMOD=0x20;

单片机利用中断复位的两种方式

cathy /

如果想要实现利用中断复位,我所知道的有两种方式:看门狗中断和无中断服务程序的中断。

<center><img src="http://mouser.eetrend.com/files/2018-10/wen_zhang_/100015274-51347-y1.j…; alt=“” width="600"></center>

<strong>一、利用看门狗中断实现复位</strong>

单片机中看门狗的作用在这里就不详细说了,看门狗中断的功能之一是,防止单片机程序陷入预料之外的死循环或者单片机程序跑飞。

<strong>如何实现看门狗中断复位呢?</strong>

STM32的中断(优先级,开关总中断)

cathy /

<strong>一:综述</strong>

STM32 目前支持的中断共为 84 个(16 个内核+68 个外部), 16 级可编程中断优先级 的设置(仅使用中断优先级设置 8bit 中的高 4 位)和16个抢占优先级(因为抢占优先级最多可以有四位数)。

<strong>二:优先级判断</strong>

STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作‘亚优先级’或‘副优先级’,每个中断源都需要被指定这两种优先级。

具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。

当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。

<strong>三:优先级分组</strong>

STM32中断和事件的区别!

cathy /

<strong>STM32中断和事件的区别!</strong>

事件是中断的触发源,开放了对应的中断屏蔽位,则事件可以触发相应的中断。

事件还是其它一些操作的触发源,比如DMA,还有TIM中影子寄存器的传递与更新;而中断是不能触发这些操作的,所以要把事件与中断区分开。当你只要产生中断而不想触发其它操作时,就可以用事件屏蔽寄存器实现。
在STM32中,中断与事件不是等价的,一个中断肯定对应一个事件,但一个事件不一定对应一个中断。

<center><img src="http://mouser.eetrend.com/files/2017-12/wen_zhang_/100009505-32112-zd.j…; alt=“” width="600"></center>

8位PIC®单片机上的向量中断控制器

cathy /

<strong>简介</strong>

中断是一种请求,能够使单片机暂停运行主程序,转而执行称为中断服务程序(Interrupt Service Routine,ISR)的任务。通常,中断向量由中断处理程序中包含的多个中断源共用。发生中断时,处理程序内部将扫描中断标志以确定中断源,然后调用该中断源的ISR。向量中断控制器模块提供了一种替代方案,即使用中断向量表(Interrupt Vector Table,IVT)。IVT为每个中断源提供一个中断向量。发生中断时,将直接执行中断程序,无需扫描中断源的标志位。

本技术简介的目的是演示向量中断控制器在处理和实现中断程序时的功能和灵活性。