4.2.1嵌套向量中断控制器NVIC嵌套向量中断控制器,简称NVIC,是ARMCortex-M3不可分离的一部分,它与M3内核的逻辑紧密耦合,有一部分其至水乳交融在一起。NVIC与Cortex-M3内核相辅相成,单应外合,共同完成对中断的响应。ARMCortex-M3内核共支持256个中断,其中16个内部中断,240个外部中断和可编程的256级中断优先级的设置STM32目前支持的中断共84个(16个内部十68个外部),还有16级可编程的中断优先级。STM32可支持68个中断通道,已经固定分配给相应的外部设备,每个中断通道都具备自已的中断优先级控制字节(8位,但是STM32中只使用4位,高4位有效),每4个通道的8位中断优先级控制字构成一个32位的优先级寄存器。68个通道的优先级控制字至少构成17个32位的优先级寄存器
嵌套向量中断控制器,简称NVIC,是ARM Cortex-M3 不可分离的一部分,它与M3内核的逻辑紧密耦合,有一部分 甚至水乳交融在一起。NVIC与Cortex-M3内核相辅相成,里 应外合,共同完成对中断的响应。 ARM Cortex-M3内核共支持256个中断,其中16个内部 中断,240个外部中断和可编程的256级中断优先级的设置。 STM32目前支持的中断共84个(16个内部+68个外部), 还有16级可编程的中断优先级。 STM32可支持68个中断通道,已经固定分配给相应的外 部设备,每个中断通道都具备自己的中断优先级控制字节( 8位,但是STM32中只使用4位,高4位有效),每4个通道 的8位中断优先级控制字构成一个32位的优先级寄存器。68 个通道的优先级控制字至少构成17个32位的优先级寄存器。 4.2.1嵌套向量中断控制器NVIC
4.2.2STM32F103中断优先级中断优先级决定了一个中断是否能被屏蔽,以及在未屏蔽的情况下何时可以响应。优先级的数值越小,则优先级越高。STM32(Cortex-M3)中有两个优先级的概念:抢占式优先级和响应优先级,也把响应优先级称作“亚优先级”或“副优先级”,每个中断源都需要被指定这两种优先级。1.何为抢占式优先级(preemptionpriority)高抢占式优先级的中断事件会打断当前的主程序/中断程序运行,俗称中断嵌套
中断优先级决定了一个中断是否能被屏蔽,以及在未屏 蔽的情况下何时可以响应。优先级的数值越小,则优先级越 高。 STM32(Cortex-M3)中有两个优先级的概念:抢占式 优先级和响应优先级,也把响应优先级称作“亚优先级”或 “副优先级”,每个中断源都需要被指定这两种优先级。 1. 何为抢占式优先级(preemption priority) 高抢占式优先级的中断事件会打断当前的主程序/中断 程序运行,俗称中断嵌套。 4.2.2 STM32F103中断优先级
2.何为响应优先级(subpriority)在抢占式优先级相同的情况下,高响应优先级的中断优先被响应。在抢占式优先级相同的情况下,如果有低响应优先级中断正在执行,高响应优先级的中断要等待已被响应的低响应优先级中断执行结束后才能得到响应(不能嵌套)。3.判断中断是否会被响应的依据首先是抢占式优先级,其次是响应优先级。抢占式优先级决定是否会有中断嵌套
2. 何为响应优先级(subpriority) 在抢占式优先级相同的情况下,高响应优先级的中断优 先被响应。 在抢占式优先级相同的情况下,如果有低响应优先级中 断正在执行,高响应优先级的中断要等待已被响应的低响应 优先级中断执行结束后才能得到响应(不能嵌套)。 3. 判断中断是否会被响应的依据 首先是抢占式优先级,其次是响应优先级。抢占式优先 级决定是否会有中断嵌套
4.优先级冲突的处理具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断的嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据它们的响应优先级高低来决定先处理一个;如果它们的抢占式优先级和响应优先级都相等,则根据它们在中断表中的排位顺序决定先处理哪一个
4.优先级冲突的处理 具有高抢占式优先级的中断可以在具有低抢占式优先级 的中断处理过程中被响应,即中断的嵌套,或者说高抢占式 优先级的中断可以嵌套低抢占式优先级的中断。 当两个中断源的抢占式优先级相同时,这两个中断将没 有嵌套关系,当一个中断到来后,如果正在处理另一个中断 ,这个后到来的中断就要等到前一个中断处理完之后才能被 处理。如果这两个中断同时到达,则中断控制器根据它们的 响应优先级高低来决定先处理一个;如果它们的抢占式优先 级和响应优先级都相等,则根据它们在中断表中的排位顺序 决定先处理哪一个
5.STM32中对中断优先级的定义STM32中指定中断优先级的寄存器位有4位,这4个寄存器位的分组方式如下:1)第0组:所有4位用于指定响应优先级2)第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级。3)第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级。4)第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级。5)第4组:所有4位用于指定抢占式优先级
5. STM32中对中断优先级的定义 STM32中指定中断优先级的寄存器位有4位,这4个寄存 器位的分组方式如下: 1)第0组:所有4位用于指定响应优先级。 2)第1组:最高1位用于指定抢占式优先级,最低3位用 于指定响应优先级。 3)第2组:最高2位用于指定抢占式优先级,最低2位用 于指定响应优先级。 4)第3组:最高3位用于指定抢占式优先级,最低1位用 于指定响应优先级。 5)第4组:所有4位用于指定抢占式优先级