21ic电子技术开发论坛

标题: 单片机中断的优先级 [打印本页]

作者: usysm    时间: 2023-12-23 12:25
标题: 单片机中断的优先级
中断优先级的内容,大家先通过我的介绍大概了解一下即可,后边实际应用的时候我们再详细理解。
在讲中断产生背景的时候,我们仅仅讲了看电视和烧水的例子,但是实际生活当中还有更复杂的,比如我正在看电视,这个时候来电话了,我要进入接电话的“中断”程序当中去,就在接电话的同时,听到了水开的声音,水开的“中断”也发生了,我们就必须要放下手上的电话,先把煤气关掉,然后再回来听电话,最后听完了电话再看电视,这里就产生了一个优先级的问题。
还有一种情况,我们在看电视的时候,这个时候听到水开的声音,水开的“中断”发生了,我们要进入关煤气的“中断”程序当中,而在关煤气的同时,电话声音响了,而这个时候,我们的处理方式是先把煤气关闭,再去接听电话,最后再看电视。
从这两个过程中,我们可以得到一个结论,就是最最紧急的事情,一旦发生后,我们不管当时处在哪个“程序”当中,我们必须先去处理最最紧急的事情,处理完毕后再去解决其它事情。
在我们的单片机程序当中有时候也是这样的,有一般紧急的中断,有特别紧急的中断,这取决于具体的系统设计,这就涉及到中断优先级和中断嵌套的概念,在本章节我们先简单介绍一下相关寄存器,不做例程说明。
中断优先级有两种,一种是抢占优先级,一种是固有优先级,先介绍抢占优先级。来看表6-4和表6-5。
表6-4 IP——中断优先级寄存器的位分配(地址 0xB8、可位寻址)
7
6
5
4
3
2
1
0
符号----PT2PSPT1PX1PT0PX0
复位值----000000
表6-5 IP——中断优先级寄存器的位描述
符号
描述
7--保留
6--保留
5PT2定时器2中断优先级控制位
4PS串口中断优先级控制位
3PT1定时器1中断优先级控制位
2PX1外部中断1中断优先级控制位
1PT0定时器0中断优先级控制位
0PX0外部中断0中断优先级控制位
IP 这个寄存器的每一位,表示对应中断的抢占优先级,每一位的复位值都是0,当我们把某一位设置为1的时候,这一位的优先级就比其它位的优先级高了。比如我们设置了 PT0 位为1后,当单片机在主循环或者任何其它中断程序中执行时,一旦定时器 T0 发生中断,作为更高的优先级,程序马上就会跑到 T0 的中断程序中来执行。反过来,当单片机正在 T0中断程序中执行时,如果有其它中断发生了,还是会继续执行 T0 中断程序,直到把 T0 中的中断程序执行完毕以后,才会去执行其它中断程序。
当进入低优先级中断中执行时,如又发生了高优先级的中断,则立刻进入高优先级中断执行,处理完高优先级级中断后,再返回处理低优先级中断,这个过程就叫做中断嵌套,也称为抢占。所以抢占优先级的概念就是,优先级高的中断可以打断优先级低的中断的执行,从而形成嵌套。当然反过来,优先级低的中断是不能打断优先级高的中断的。
那么既然有抢占优先级,自然就也有非抢占优先级了,也称为固有优先级。
在表6-3中的最后一列给出的就是固有优先级,请注意,在中断优先级的编号中,一般都是数字越小优先级越高。
从表中可以看到一共有1~6共6级的优先级,这里的优先级与抢占优先级的一个不同点就是,它不具有抢占的特性,也就是说即使在低优先级中断执行过程中又发生了高优先级的中断,那么这个高优先级的中断也只能等到低优先级中断执行完后才能得到响应。既然不能抢占,那么这个优先级有什么用呢?
答案是多个中断同时存在时的仲裁。比如说有多个中断同时发生了,当然实际上发生这种情况的概率很低,但另外一种情况就常见的多了,那就是出于某种原因我们暂时关闭了总中断,即 EA=0,执行完一段代码后又重新使能了总中断,即 EA=1,那么在这段时间里就很可能有多个中断都发生了,但因为总中断是关闭的,所以它们当时都得不到响应,而当总中断再次使能后,它们就会在同时请求响应了,很明显,这时也必需有个先后顺序才行,这就是非抢占优先级的作用了——如表6-3中,谁优先级最高先响应谁,然后按编号排队,依次得到响应。
抢占优先级和非抢占优先级的协同,可以使单片机中断系统有条不紊的工作,既不会无休止的嵌套,又可以保证必要时紧急任务得到优先处理。


作者: mattlincoln    时间: 2024-1-3 12:24
在需要串口通信和低优先级中断同时工作时,需要合理设置串行中断的优先级。
作者: hearstnorman323    时间: 2024-1-3 12:41
根据单片机手册进行正确的优先级寄存器配置。这可能涉及单独的优先级寄存器、中断使能寄存器中的优先级位,或者通过特殊的数据结构来设定。
作者: uiint    时间: 2024-1-3 13:39
中断处理应该尽可能快,以避免对系统性能的影响。
如果中断处理时间过长,可能会影响其他中断的处理。

作者: rosemoore    时间: 2024-1-3 14:46
一些特殊的中断源可能会有特定的优先级设置要求,需要仔细阅读相关文档和参考手册。
作者: gygp    时间: 2024-1-3 15:04
通常情况下,应将响应时间要求严格的中断设置为较高优先级。
作者: yeates333    时间: 2024-1-3 15:49
抢占优先级的特点是,具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套。
作者: gygp    时间: 2024-1-3 16:11
在编写中断服务程序时,应尽量缩短中断服务程序的执行时间,避免长时间占用中断资源,影响其他中断的处理。
作者: nomomy    时间: 2024-1-3 16:38
需要根据中断的紧急程度和优先级来设置中断的响应顺序。
作者: elsaflower    时间: 2024-1-3 17:22
在某些情况下,为了防止优先级反转,可能需要临时屏蔽低优先级的中断。
作者: juliestephen    时间: 2024-1-3 17:34
在某些高级单片机中,优先级策略还分为抢占式优先级和子优先级。抢占式优先级决定中断能否打断其他中断;子优先级在同级抢占优先级中断之间进一步划分处理顺序。
作者: usysm    时间: 2024-1-3 17:46
避免将所有中断源设置为同一优先级,否则可能导致中断响应延迟。
作者: abotomson    时间: 2024-1-3 17:55
中断优先级还会影响单片机处理中断的时间。优先级较高的中断通常会占用较短的处理时间,而优先级较低的中断则需要等待优先级较高的中断处理完毕后才能被处理,这会导致处理时间较长。
作者: eefas    时间: 2024-1-3 18:42
嵌套中断是指一个中断服务程序在执行过程中可以被另一个更高优先级的中断所打断。
在嵌套中断中,必须确保能够正确地返回到被中断的中断服务程序。
作者: lzbf    时间: 2024-1-3 19:20
它决定了当多个中断同时发生时,哪个中断会被优先处理。一般来说,单片机的中断有两种优先级:抢占优先级和固有优先级。
作者: alvpeg    时间: 2024-1-3 19:38
单片机的中断优先级通常通过硬件寄存器进行设置。不同的单片机型号可能会有不同的寄存器名称和设置方法。
作者: youtome    时间: 2024-1-4 09:45
中断处理程序中不应再次产生同级或更高优先级的中断。否则,可能导致中断处理程序无法退出,系统陷入死循环。
作者: bestwell    时间: 2024-1-4 10:22
固有优先级则没有这种特性,即使在低优先级中断执行过程中又发生了高优先级中断,也不会改变低优先级中断的处理顺序。
作者: linfelix    时间: 2024-1-4 11:43
不同型号的单片机可能有不同的中断优先级设置方法,需要参考单片机的数据手册。
作者: pentruman    时间: 2024-1-4 13:32
有些单片机只提供简单的固定优先级或不可编程优先级,而有些则提供了丰富的可编程优先级机制。
作者: juliestephen    时间: 2024-1-4 16:26
通常,优先级较高的中断源会先被处理,而优先级较低的中断源会在优先级较高的中断源处理完毕后再被处理。
作者: tabmone    时间: 2024-1-4 17:10
在设置中断优先级时,需要充分考虑各个中断源的重要性和紧急程度,以平衡中断处理时间。
作者: lzmm    时间: 2024-1-5 09:27
在调试中断优先级时,可以使用打印调试信息或示波器观察中断响应时间和处理时间,以确保中断优先级设置正确。
作者: uytyu    时间: 2024-1-5 17:49
同一优先级中的中断申请不止一个时,则有中断优先权排队问题。在这种情况下,CPU按照自然优先级顺序响应各中断请求。
作者: geraldbetty    时间: 2024-1-5 18:29
每个中断源都可以设置一个优先级,通常通过寄存器来配置。
优先级通常分为几个级别,例如最高优先级、中等优先级和最低优先级。
作者: minzisc    时间: 2024-1-5 20:47
如果支持嵌套,则需确保中断服务程序尽可能快速高效,以避免长时间阻塞更高优先级的中断请求。
作者: eefas    时间: 2024-1-5 21:08
时钟中断的优先级次高,用于定时器中断。当出现同时中断请求时,时钟中断优先级高于串口中断
作者: yeates333    时间: 2024-1-6 21:43
单片机通常支持软件中断和硬件中断。软件中断的优先级通常低于硬件中断
作者: mickit    时间: 2024-1-6 22:53
中断优先级是指在多个中断源同时发生时,单片机处理这些中断的优先顺序。
作者: AIsignel    时间: 2024-1-8 12:38
必要按照间断的告急水平以及优先级来设置间断的相应次序。
作者: alvpeg    时间: 2024-1-8 14:35
中断嵌套是指在中断处理过程中,如果另一个优先级较高的中断发生,那么当前中断的处理可能会被暂停,以便优先处理新发生的中断。
作者: 天天向善    时间: 2024-1-8 14:41
一些特别的间断源大概会有特定的优先级设置请求,必要仔细阅读相干文档以及参考手册。
作者: jimmhu    时间: 2024-1-8 15:28
在多任务环境中,注意防止由于中断优先级设置不当造成的优先级反转问题,尤其是在涉及中断和任务调度协同工作的RTOS系统中。
作者: beacherblack    时间: 2024-1-8 16:11
大多数单片机都有专门的寄存器来配置中断优先级。
需要熟悉这些寄存器的位设置和优先级规则。
作者: ulystronglll    时间: 2024-1-8 16:43
当两个或多个中断具有相同的优先级时,可能会发生优先级冲突。
作者: yeates333    时间: 2024-1-8 18:17
低优先级中断可以在高优先级中断处理过程中被响应,但高优先级中断不应在低优先级中断处理过程中被响应,以防止中断嵌套过深导致系统不稳定。
作者: 鹿鼎计    时间: 2024-1-9 09:44
不同型号的微控制器可能有不同的中断优先级设置方法,需要参考微控制器的数据手册。
作者: Pretext    时间: 2024-1-9 14:26
嵌入式凡是支持软件间断以及硬件间断,软件间断的优先级凡是低于硬件间断
作者: minzisc    时间: 2024-1-9 17:05
小心处理中断嵌套,避免因处理不当导致的程序运行错误。
作者: uptown    时间: 2024-1-9 19:08
中断优先级是由中断优先级寄存器(IP)中的相应位的状态来规定的。IP的状态由软件设定,某位设定为“1”,则相应的中断源为高优先级中断;某位设定为“0”,则相应的中断源为低优先级中断。
作者: hudi008    时间: 2024-1-9 19:44
不可屏蔽中断的优先级最高,不能被其他中断打断,且不可被软件修改。
作者: mickit    时间: 2024-1-9 20:22
在编写中断服务程序时,应尽量简洁高效,避免执行耗时较长的操作
作者: wwppd    时间: 2024-1-9 21:24
高优先级中断应当用于处理关键性任务,如实时性要求较高的数据采集或控制。低优先级中断可以用于处理非实时性或次要的任务。
作者: ulystronglll    时间: 2024-1-10 08:34
中断优先级还会影响中断嵌套的处理。
作者: 1988020566    时间: 2024-1-10 10:00
中断触发方式也会影响中断响应优先级的实际效果,尤其是对于同时发生的中断信号,需要明确是采用边沿触发还是电平触发,并根据实际需求调整中断逻辑。
作者: belindagraham    时间: 2024-1-10 10:32
在设置中断优先级时,需要充分考虑可能的中断嵌套情况,以避免因优先级设置不当导致的中断处理问题。
作者: adolphcocker    时间: 2024-1-10 11:02
先响应优先级高的中断请求,再响应优先级低的中断请求。如果一个中断请求已经被响应,同级的其他中断请求将被禁止
作者: iyoum    时间: 2024-1-10 12:07
在单片机应用中,中断优先级是一个重要的概念。
作者: abotomson    时间: 2024-1-10 18:55
如果中断服务程序中需要进行大量的计算或者操作,可以考虑使用中断嵌套,即在中断服务程序中再次响应更高优先级的中断,这样可以提高中断处理的效率。
作者: sesefadou    时间: 2024-1-10 19:12
在设置中断优先级时,需要参考相应的数据手册,了解正确的设置方法。
作者: modesty3jonah    时间: 2024-1-10 19:25
在单片机中断的优先级设置中,需要根据实际需求和系统要求来合理分配优先级。一般来说,高级中断可以打断正在执行的低级中断,而同级或低级中断不能打断正在执行的中断。
作者: claretttt    时间: 2024-1-10 19:57
在设置中断优先级时,需要根据实际需求合理分配软件中断和硬件中断的优先级。
作者: mnynt121    时间: 2024-1-10 20:17
每个中断源都可以设置一个优先级,通常通过寄存器来配置。
作者: eefas    时间: 2024-1-10 20:42
当同时使用接收和发送中断时,要小心处理数据的同步和缓冲区管理,以避免数据的丢失或覆盖。
作者: elsaflower    时间: 2024-1-10 21:13
在设置中断优先级时,还需要注意一些其他问题。例如,如果使能中断但没有配置优先级,则默认是最高优先级,无法被其他中断打断。
作者: olivem55arlowe    时间: 2024-1-10 21:21
在单片机编程中,中断的优先级是一个重要的概念,它决定了在多中断同时发生时,哪个中断会被首先处理。
作者: macpherson    时间: 2024-1-10 22:40
在需要定时器和串口同时工作时,需要合理设置时钟中断的优先级。
作者: LinkMe    时间: 2024-1-11 10:38
在某些环境下,为了防备优先级反转,大概必要姑且屏障低优先级的间断。
作者: 芯路例程    时间: 2024-1-11 16:12
某些特殊的间歇源可能有特定的优先级设置要求,需要仔细阅读相关文件和参考手册。
作者: mattlincoln    时间: 2024-1-11 21:22
在一个中断服务程序中,如果有多个中断请求,通常按照优先级从高到低的顺序来处理。
作者: backlugin    时间: 2024-1-11 21:31
优先级高的中断可以打断优先级低的中断服务。
作者: V853    时间: 2024-2-2 00:57
不成屏障间断的优先级最高,不克不及被其他间断打断,且不成被软件改。
作者: digit0    时间: 2024-2-4 00:12
中断优先级是指微控制器同时处理多个中断源的优先级顺序。
作者: 软核硬核    时间: 2024-2-6 01:56
凡是环境下,应将相应时候请求严酷的间断设置为较高优先级。
作者: chenci2013    时间: 2024-2-6 23:33
优先级高的中断可以打断优先级低的中断服务。
作者: nomomy    时间: 2024-2-7 02:20
在单片机中断的优先级设置中,需要根据实际需求和系统要求来合理分配优先级。一般来说,高级中断可以打断正在执行的低级中断,而同级或低级中断不能打断正在执行的中断。
作者: pentruman    时间: 2024-2-7 03:27
在设置中断优先级时,需要参考相应的数据手册,了解正确的设置方法。
作者: 朝生    时间: 2024-2-7 09:48
在编写中断服务程序时,为了避免耗时的操作,一定要做到简洁、高效
作者: uytyu    时间: 2024-2-7 18:03
在单片机应用中,中断优先级是一个重要的概念。
作者: sheflynn    时间: 2024-2-7 21:15
每个中断源都可以设置一个优先级,通常通过寄存器来配置。
作者: lihuami    时间: 2024-2-9 12:33
在一个中断服务程序中,如果有多个中断请求,通常按照优先级从高到低的顺序来处理。
作者: hilahope    时间: 2024-2-9 16:49
中断触发方式也会影响中断响应优先级的实际效果,尤其是对于同时发生的中断信号,需要明确是采用边沿触发还是电平触发,并根据实际需求调整中断逻辑。
作者: macpherson    时间: 2024-2-10 21:51
如果中断服务程序中需要进行大量的计算或者操作,可以考虑使用中断嵌套,即在中断服务程序中再次响应更高优先级的中断,这样可以提高中断处理的效率。
作者: 1988020566    时间: 2024-2-12 02:00
在单片机编程中,中断的优先级是一个重要的概念,它决定了在多中断同时发生时,哪个中断会被首先处理。
作者: 10299823    时间: 2024-2-15 21:28
在设置中断优先级时,需要充分考虑可能的中断嵌套情况,以避免因优先级设置不当导致的中断处理问题。
作者: louliana    时间: 2024-2-16 10:48
在需要定时器和串口同时工作时,需要合理设置时钟中断的优先级。
作者: ingramward    时间: 2024-2-16 11:40
在设置中断优先级时,需要根据实际需求合理分配软件中断和硬件中断的优先级。
作者: iyoum    时间: 2024-2-16 12:50
在设置中断优先级时,还需要注意一些其他问题。例如,如果使能中断但没有配置优先级,则默认是最高优先级,无法被其他中断打断。
作者: mickit    时间: 2024-2-16 14:47
先响应优先级高的中断请求,再响应优先级低的中断请求。如果一个中断请求已经被响应,同级的其他中断请求将被禁止
作者: bestwell    时间: 2024-2-17 20:28
当同时使用接收和发送中断时,要小心处理数据的同步和缓冲区管理,以避免数据的丢失或覆盖。
作者: LLGTR    时间: 2024-3-6 14:02
微控制器的中断优先级通常是通过硬件寄存器设置的,不同的微控制器型号可能有不同的寄存器名和设置方法。





欢迎光临 21ic电子技术开发论坛 (https://bbs.21ic.com/) Powered by Discuz! X3.5