关于STM32嵌套向量中断控制器NVIC浅析

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

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

说的容易理解点,就好比你是足浴中心副经理。你让工作人员来给你来个经典套餐,工作人员开始给你 松骨 -> 按摩 -> 抹精油,但是在按摩过程中总经理来了,他也来了一个经典套餐。那好,工作人员放下手中的精油转而去服务总经理了,把你晾在那。等工作人员给总经理安排好之后,继续完成你副经理的服务。

当两个中断源的抢占式优先级相同时,不可以进行嵌套

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

熊大熊二都去足浴中心,这俩熊都是大堂经理,级别职位上一样。现在有俩情况:

其一,熊二已经开始按摩了,还没有结束。按摩过程中熊大也来了,那熊大也只能等着熊二按摩完成之后才能开始。因为都是大堂经理啊,谁也不比谁低一头啊。

其二,两人一块来的。工作人员也不知道给那个先开始按摩啊?职位都一样啊,那就根据入职年限长短来决定哪一个先开始;如果入职年限(响应优先级)也都一样,那就根据年龄(中断表中的排位顺序)来决定...

Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此STM32把指定中断优先级的寄存器位减少到4位,这4个寄存器位的分组方式如下:

你可能感兴趣的:(单片机,stm32)