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

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

3天内不再提示

单片机里的“中断”优先级

Q4MP_gh_c472c21 ? 来源:技术让梦想更伟大 ? 作者:技术让梦想更伟大 ? 2022-04-08 09:57 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

中断优先级的内容,有一般紧急的中断,有特别紧急的中断,这取决于具体的系统设计,这就涉及到中断优先级和中断嵌套的概念,今天先简单介绍一下相关寄存器,不做例程说明。

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

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

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

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

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

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

9c9d1d68-b6b9-11ec-aa7f-dac502259ad0.png

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

9ca935d0-b6b9-11ec-aa7f-dac502259ad0.png

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

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

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

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

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

表3:中断查询序列

9cba992e-b6b9-11ec-aa7f-dac502259ad0.png

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

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

答案是多个中断同时存在时的仲裁。比如说有多个中断同时发生了,当然实际上发生这种情况的概率很低,但另外一种情况就常见的多了,那就是出于某种原因我们暂时关闭了总中断,即 EA=0,执行完一段代码后又重新使能了总中断,即 EA=1,那么在这段时间里就很可能有多个中断都发生了,但因为总中断是关闭的,所以它们当时都得不到响应,而当总中断再次使能后,它们就会在同时请求响应了。

很明显,这时也必需有个先后顺序才行,这就是非抢占优先级的作用了——如表3中,谁优先级最高先响应谁,然后按编号排队,依次得到响应。

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

END

审核编辑 :李倩

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

    关注

    6068

    文章

    45040

    浏览量

    652549
  • 寄存器
    +关注

    关注

    31

    文章

    5440

    浏览量

    125030

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

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    TLe9893怎么调整外设的中断优先级

    你好林工,我该怎么调整外设的中断优先级?是否可以通过工具调整?默认设置下,是不是Brdv的在中断优先级高于T20和can?
    发表于 08-01 06:20

    请问C0系列单片机中断优先级只有4吗?

    C0系列单片机中断优先级只有4?C071在配置的时候只能配置0-3
    发表于 07-23 08:00

    第十章 W55MH32中断应用概览

    本章讲述了W55MH32中断应用,涵盖异常类型、NVIC介绍、优先级定义与分组,阐述中断编程三要点(使能中断、配置 NVIC、编写服务函数),并强调
    的头像 发表于 05-22 17:07 ?1114次阅读
    第十章 W55MH32<b class='flag-5'>中断</b>应用概览

    CyU3PDebugPrint的最高优先级和最低优先级是什么?

    [i]CyU3PDebugPrint的最高优先级和最低优先级是什么?
    发表于 05-13 08:22

    配电柜—断电危机?配电柜故障排查优先级指南

    在排查配电柜故障过程中,合理安排排查优先级至关重要。下面聊一下如何科学合理安排配电柜故障排查优先级顺序。
    的头像 发表于 03-06 18:55 ?461次阅读
    配电柜—断电危机?配电柜故障排查<b class='flag-5'>优先级</b>指南

    单片机中断技术详解

    在现代电子设备中,单片机作为控制核心发挥着举足轻重的作用。而在其高效运作的背后,中断机制是推动单片机实现实时响应与高效执行的关键因素。本文将深入探讨单片机中的
    的头像 发表于 02-02 15:57 ?1013次阅读

    单片机中断相关知识点

    中断可以让单片机在多个任务之间切换,为每个任务分配一定的处理时间,从而提高资源的利用效率。1.2行业现状1.2.1应用现状(1)嵌入式系统:中断机制是嵌入式系统中提升系统效率与响应能力的关键技术。它
    发表于 11-30 09:49

    c51单片机中断

    优先级中断正在处理,CPU 会暂停当前正在执行的指令,将程序计数器(PC)等关键寄存器的值保存到堆栈中,然后根据中断源找到对应的中断向量地址。
    发表于 11-25 21:43

    单片机有哪些中断类型

    单片机中断是指在单片机执行程序的过程中,当外部设备或内部条件发生某个特定事件时,能够暂停当前正在执行的程序,转而去执行一个特定的服务程序(称为中断服务程序或
    的头像 发表于 10-17 18:12 ?2477次阅读

    单片机中断机制

    单片机中断机制是一种重要的处理方式,它允许单片机在执行主程序的过程中,能够暂停当前任务,转而处理外部或内部紧急事件。这种机制极大地提高了系统的响应速度和处理能力,使得单片机在各种应用
    的头像 发表于 10-17 18:03 ?2034次阅读

    使用CH32V103C8TC设置中断优先级分组时,编译报错的原因?

    使用CH32V103C8TC设置中断优先级分组时,设置为NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);编译报错 而使用NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); 却不会报
    发表于 09-27 06:03

    单片机中断有哪些?各类型中断有什么作用?

    数据采集。 DAC中断:当数字-模拟转换完成或准备好接受新数据时触发。用于生成模拟信号。 5. 系统中断 系统中断是与单片机核心系统功能相关的中断
    发表于 09-24 16:22

    CH32V103 使用中断优先级分组0时报错

    使用CH32V103C8TC设置中断优先级分组时,设置为NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);而使用NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);却不会报错
    发表于 09-23 13:52

    在汽车区域模块中使用理想二极管的优先级电源多路复用器

    电子发烧友网站提供《在汽车区域模块中使用理想二极管的优先级电源多路复用器.pdf》资料免费下载
    发表于 09-05 11:08 ?0次下载
    在汽车区域模块中使用理想二极管的<b class='flag-5'>优先级</b>电源多路复用器

    freertos中断优先级在哪设置

    FreeRTOS是一个流行的实时操作系统,它广泛应用于嵌入式系统开发。在FreeRTOS中,中断优先级是一个重要的概念,因为它决定了中断处理的顺序和响应时间。 1. 理解中断
    的头像 发表于 09-02 14:17 ?1645次阅读