stm32之中断响应优先级

1)中断响应分为:自然优先级、抢占优先级、响应优先级。

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

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

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

    A和B抢占优先级和响应优先级均一致,则谁先来就先处理谁,如果还是同时发生则由自然优先级决定。自然优先级在数据手册  NVIC向量表中可查询到。

    如果有多个相同抢占优先级的中断来了 ,那么他们不会互相打断,但是他们后续的排队会按照响应优先级排队。那么也就是说,在第一个中断没有执行完的期间内, 后续的最高级的响应优先级是被安排到最高等待位处理的;

    第一,如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行;第二,高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。而抢占优先级相同的中断,高优先级的响应优先级不可以打断低响应优先级的中断。抢占式优先级别相同的中断源之间没有嵌套关系

3)中断函数说明可见上一篇记录:

https://www.cnblogs.com/anSn/p/11619048.html

原文地址:https://www.cnblogs.com/anSn/p/11620920.html

时间: 2024-10-03 04:16:06

stm32之中断响应优先级的相关文章

stm32中断 抢占优先级 和 响应优先级 有什么区别

与51不同,stm32的中断分类更灵活.51只是按先后顺序大小排列互相打断. stm32中多了响应优先级这一概念. stm32的中断分为 1.抢占(占先)优先级. 2.响应优先级. 1.抢占优先级.抢占优先级高的中断,可以打断抢占优先级低的中断. 2.响应优先级.抢占优先级相同的中断,响应优先级高的可以优先执行. 也许会有疑问:抢占优先级相同的中断,响应优先级高的不可以打断响应优先级低的中断.两个中断肯定是谁先来了就相应谁,两个中断不可能同时来.响应优先级又有何用呢. 其实,响应优先级主要给出了

STM32的串口采用DMA方式接收数据测试(转)

STM32的串口采用DMA方式接收数据测试 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.   参考链接:http://www.amobbs.com/forum.PHP?mod=viewthread&tid=5511863&highlight=dma%E6%8E%A5%E6%94%B6   环境: 主机:WINXP 开发环境:MDK4.23 MCU:STM32F103CBT6 说明: 串口可以配置成用DMA的方式接收数据,不过DMA需要定长才

STM32的PWM输入模式设置并用DMA接收数据

STM32的PWM输入模式设置并用DMA接收数据 项目中需要进行红外学习,如果采用输入捕获的方式,因为定时器只能捕获上升沿或者下降沿, 所以只能获得周期,而不能得到具体的红外波的高低电平的时间. 所以采用PWM输入的方式进行捕获. 采用的是PA8脚,对应TIM1的通道1. /********************************************************************* * 函数 *************************************

stm32常用驱动源码

源码的目录结构如下: STM32LIB USER USER目录如下 hardware_dri main software_module hardware_dri目录 Adc_hard_dri.c //uiAdData:存放AD采样的数据//ucSampleNum:存放AD采样的次数//ucRemoveNum:存放最低值与最高值的个数//去掉的数值放在数组0-(cRemoveNum-1)及(cSampleNum-ucRemoveNum)-(ucSampleNum-1),即最大值与最小值均放在两端v

STM32基本GPIO操作:按键输入(扫描+外部中断)

(涉及专有名词较多,难免解释不到位,若有错误还请指出,谢谢!) 硬件连接图如下: 一.扫描 思路是在main函数中通过死循环来扫描端口电平状态检测,以此判断按键是否按下.实现较为简单. 1.初始化(注意C语言中变量声明需放在函数开头) 以下是初始化PB5端口(LED灯)的代码,每一条语句的含义在我另一篇博客里 GPIO_InitTypeDef GPIO_Init1; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_Init1.

STM32 NVIC配置详解

例程:  /* Configure one bit for preemption priority */  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);    /* Enable the WAKEUP_BUTTON_EXTI_IRQn Interrupt */  NVIC_InitStructure.NVIC_IRQChannel = WAKEUP_BUTTON_EXTI_IRQn;  NVIC_InitStructure.NVIC_IRQCha

stm32之NVIC

非本人原创,转载自http://blog.csdn.net/denghuanhuandeng/article/details/8350392 STM32的NVIC理解 例程:  /* Configure one bit for preemption priority */   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);    /* Enable the WAKEUP_BUTTON_EXTI_IRQn Interrupt */  NVIC_Ini

STM32F407的串口采用DMA收发数据

?? STM32F407的串口采用DMA收发数据 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN8 开发环境:MDK5.13 mcu: stm32f407VGT6 说明: 之前用STM32F103实现DMA收发串口数据,现在项目中采用STM32F407,所以将此机制移植到F4上. STM32F103上用DMA收发串口数据文章: STM32的串口采用DMA方式发送数据测试 STM32的串口采用DMA方式接收数据测试 源代码: 串

STM32---NVIV:嵌套中断向量控制器

STM32有43个channel的settable的中断源:AIRC(Application Interrupt and Reset Register)寄存器中有用于指定优先级的4 bits.这4个bits用于分配preemption优先级和sub优先级,在STM32的固件库中定义如下/* Preemption Priority Group -------------------------------------------------*/#define NVIC_PriorityGroup_