中止优先级的内容,咱们先经过我的介绍大约了解一下即可,后边实践使用的时分咱们再详细了解。
在讲中止产生布景的时分,咱们只是讲了看电视和烧水的比方,可是实践生活傍边还有更杂乱的,比方我正在看电视,这个时分来电话了,我要进入接电话的“中止”程序傍边去,就在接电话的一起,听到了水开的声响,水开的“中止”也产生了,咱们就有必要要放下手上的电话,先把煤气关掉,然后再回来听电话,最终听完了电话再看电视,这儿就产生了一个优先级的问题。
还有一种状况,咱们在看电视的时分,这个时分听到水开的声响,水开的“中止”产生了,咱们要进入关煤气的“中止”程序傍边,而在关煤气的一起,电话声响响了,而这个时分,咱们的处理方式是先把煤气封闭,再去接听电话,最终再看电视。
从这两个进程中,咱们能够得到一个定论,便是最最紧迫的作业,一旦产生后,咱们不论其时处在哪个“程序”傍边,咱们有必要先去处理最最紧迫的作业,处理结束后再去处理其它作业。在咱们的单片机程序傍边有时分也是这样的,有一般紧迫的中止,有特别紧迫的中止,这取决于详细的体系规划,这就涉及到中止优先级和中止嵌套的概念,在本章节咱们先简略介绍一下相关寄存器,不做例程阐明。
中止优先级有两种,一种是抢占优先级,一种是固有优先级,先介绍抢占优先级。来看表 6-4 和表 6-5。
表 6-4 IP——中止优先级寄存器的位分配(地址 0xB8、可位寻址)位76543210符号—-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 中,谁优先级最高先呼应谁,然后按编号排队,顺次得到呼应。
抢占优先级和非抢占优先级的协同,能够使单片机中止体系有条有理的作业,既不会无休止的嵌套,又能够确保必要时紧迫任务得到优先处理。在后续的学习进程中,中止体系会与咱们如影随形,处处都有它的身影,跟着学习的深化,相信你对它的了解也会愈加的深化。