跳转到主要内容

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

cathy /

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

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

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

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

cathy /

<strong>一:综述</strong>

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

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

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

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

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

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