0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

解析单片机里的中断优先级

GReq_mcu168 来源:cg 2018-12-28 17:03 次阅读

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

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

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

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

中断优先级有两种,一种是抢占优先级,一种是固有优先级,先介绍抢占优先级。来看表1和表2。

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

pIYBAFwl51SAINY8AAAJW9_XSzQ368.png

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

pIYBAFwl51WAFEjvAAAdQzGVwmk028.png

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

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

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

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

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

表3:中断查询序列

pIYBAFwl51aAY2WXAAAdV36Xrow916.png

那么既然有抢占优先级,自然就也有非抢占优先级了,也称为固有优先级。在表3中的最后一列给出的就是固有优先级,请注意,在中断优先级的编号中,一般都是数字越小优先级越高。

从表3中可以看到一共有 1~6 共 6 级的优先级,这里的优先级与抢占优先级的一个不同点就是,它不具有抢占的特性,也就是说即使在低优先级中断执行过程中又发生了高优先级的中断,那么这个高优先级的中断也只能等到低优先级中断执行完后才能得到响应。既然不能抢占,那么这个优先级有什么用呢?

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

抢占优先级和非抢占优先级的协同,可以使单片机中断系统有条不紊的工作,既不会无休止的嵌套,又可以保证必要时紧急任务得到优先处理。在后续的学习过程中,中断系统会与我们如影随形,处处都有它的身影,随着学习的深入,相信你对它的理解也会更加的深入。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6034

    文章

    44546

    浏览量

    634369
  • 中断
    +关注

    关注

    5

    文章

    898

    浏览量

    41462

原文标题:一文读懂单片机里面的“中断”优先级

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MCS-96系列单片机中断优先级的控制方法

    MCS—96系列单片机中断系统颇具特色,其中断优先级的控制极具灵活性,用户可采用软、硬件结合的方法随心所欲地安排各类中断源的
    发表于 05-03 16:36 2525次阅读

    单片机中断优先级应用案例

    单片机同时接收到几个中断请求时,单片机中断请求的响应顺序是如何确定的?实际上,单片机是通过中断
    发表于 10-31 14:42 1601次阅读
    <b class='flag-5'>单片机</b><b class='flag-5'>中断</b><b class='flag-5'>优先级</b>应用案例

    单片机中断优先级问题

    单片机很有兴趣,有学过单片机,是51系列的。对中断优先级不太懂,期望哪位大虾帮忙下,小弟不胜感激!
    发表于 11-18 15:42

    单片机中断优先级的软件扩展方法

    为了解决MCS-51系列单片机只能由IP寄存器设定两优先级的问题,文中给出了利用软件对中断优先级进行扩展的方法,同时给出了高于两个
    发表于 04-30 13:43 29次下载

    单片机中断优先级实验

    单片机外部中断实验和中断优先级实验所需的C语言程序和电路图适于初学者使用
    发表于 11-16 18:32 0次下载

    STM32单片机优先级的定义

    先占优先级也就是抢占优先级,概念等同于51单片机中的中断。假设有两中断先后触发,已经在执行的中断
    发表于 12-07 15:09 9405次阅读
    STM32<b class='flag-5'>单片机</b><b class='flag-5'>优先级</b>的定义

    如何设置51单片机中断优先级

    PS:串行口中断优先级控制位。PS=1设定串行口为高优先级中断;PS=0为低优先级中断
    发表于 12-17 16:28 3.4w次阅读

    如何采用STM32单片机中断向量控制器NVIC来分配优先级的数量

    先占优先级的概念等同于51单片机中的中断。假设有两中断先后触发,已经在执行的中断先占优先级如果没
    发表于 12-20 16:17 3274次阅读

    51单片机中断优先级中断嵌套的详细资料概述

    基本型80C51系列单片机有5个中断源,2个优先级,每个中断源可通过软件设置为高优先级或低优先级
    发表于 09-03 17:28 5次下载
    51<b class='flag-5'>单片机</b>的<b class='flag-5'>中断</b><b class='flag-5'>优先级</b>和<b class='flag-5'>中断</b>嵌套的详细资料概述

    为什么51单片机的默认中断优先级都是低级及中断嵌套

    51单片机(80C51系列)有5个中断源,2个优先级,可以实现二中断服务嵌套。现在很多扩展的51单片机
    发表于 07-23 17:37 1次下载
    为什么51<b class='flag-5'>单片机</b>的默认<b class='flag-5'>中断</b><b class='flag-5'>优先级</b>都是低级及<b class='flag-5'>中断</b>嵌套

    51单片机中断优先级中断嵌套的详细资料说明

    51单片机(80C51系列)有5个中断源,2个优先级,可以实现二中断服务嵌套。现在很多扩展的51单片机
    发表于 07-09 17:41 3次下载
    51<b class='flag-5'>单片机</b>的<b class='flag-5'>中断</b><b class='flag-5'>优先级</b>及<b class='flag-5'>中断</b>嵌套的详细资料说明

    单片机中断优先级设置

    单片机芯 片: STC12C5A60S2 晶振是11.0592MHZ中断优先级的基本规则1.低优先级中断可被高
    发表于 11-17 09:36 6次下载
    <b class='flag-5'>单片机</b>之<b class='flag-5'>中断</b><b class='flag-5'>优先级</b>设置

    STM8S105硬件中断映射表和软件中断优先级

    硬件中断优先级中0最高,依次优先级降低。只有当软件优先级相同时,单片机才进行硬件优先级的判断,且
    发表于 01-14 15:28 1次下载
    STM8S105硬件<b class='flag-5'>中断</b>映射表和软件<b class='flag-5'>中断</b><b class='flag-5'>优先级</b>位

    51单片机中断优先级都有啥?如何设置?

    51单片机包含五个中断源,两中断优先级优先级可编程设置,通过IP进行设置。
    发表于 02-09 12:32 2次下载
    51<b class='flag-5'>单片机</b><b class='flag-5'>中断</b><b class='flag-5'>优先级</b>都有啥?如何设置?

    单片机的“中断优先级

    在我们的单片机程序当中有时候也是这样的,有一般紧急的中断,有特别紧急的中断,这取决于具体的系统设计,这就涉及到中断优先级
    的头像 发表于 04-08 09:57 5139次阅读