173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

stm32外部中断优先级调整

keros@mark 2023-03-19 资讯中心

STM32优先级

STM32中有两个关于优先级的概念,分别是抢占式优先级和响应优先级,每个中断源都需要被指定这两种优先级,其属性编号越小,表明它的优先级别越高。下面将先大致介绍一下这两个优先级的概念。

首先,如何确定优先级等级?

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

总结下便是:抢占式优先级响应优先级中断表中的排位顺序

第0组优先级最高,第4组优先级最低。

以选择NVIC_PriorityGroup_1为例,那么抢占式优先级便占一位,也就是说可以有2 1 个级别,可以设置为0和1,而响应优先级则占3位,也就是说可以有2 3 个选择,可以设置为0~7;总共来说就可以区别16种优先级。举个例子,假如现在有4个外部中断,还有一个EXTI9_5中断,那么如果选择优先级分组为第1组,那么抢占式优先级便只有两种,5个中断就至少有3个在抢占式优先级上是相同的优先级上,其他两个在令一优先级别。接着设置响应优先级可以有8种选择;假如现在同时有两个抢占式优先级别相同的中断发生,那么处理的顺序是谁的响应优先级高则谁优先进入中断,另外这点是需要注意的,如果此时进入这个中断之后又来了一个抢占式优先级相同但是响应优先级更高的中断,这时也是不会打断已有的中断的。

参考链接:

STM32的优先级NVIC_PriorityGroupConfig的理解及其使用

【转】STM32中的抢占优先级、响应优先级概念

关于stm32中断优先级

抢占优先级和响应优先级,其实是一个中断所包含的两个优先级,其中前者是对抢占优先级的级别划分,后者是相同抢占优先级的优先级别的划分。

比如:

中断A抢占优先级比B高,那么A的中断可以在B里面触发,忽略响应优先级;

A和B抢占优先级相同,则A、B的响应优先级决定谁先响应;

stm32外部中断的优先级设置

外部中断10到15是同一个中断服务函数,它们的优先级是相同的。至于无法在线仿真,这就不清楚了,你应该说具体点。

STM32 NVIC怎样配置中断优先级

可以参照STM32提供的库函数,中断优先级有抢占优先级和响应优先级之分,可以在NVIC寄存器里进行响应配置,优先级数字越小代表的优先级越高。STM32提供的库函数有如下的操作,

NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn; //中断线1全局中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //抢占优先级为2

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //响应优先级为0

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //允许EXTI0_IRQn中断

NVIC_Init(NVIC_InitStructure);

你可以下载STM32固件库使用手册进行学习

STM32中断中设置的先占式优先级与从优先级如何理解?

(1)先占式优先级就是所谓的抢占式优先级,比如一个设置为0,一个设置为2,则在2执行中断时,如果0来了,暂停2的,马上执行0的。

(2)从优先级就是设定一个中断执行的顺序,当两个中断来时,哪个优先级高执行哪个,但同一个强占优先级不同的从优先级,不能抢占那个从优先级低的。

本文标签:stm32外部中断优先级调整

产品列表
产品封装
友情链接