单片机
返回首页

STM32优先级

2025-01-02 来源:cnblogs

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


抢占式优先级与响应优先级?

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


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

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

#STM32中设置优先级的库函数

NVIC_PriorityGroupConfig(u32  NVIC_PriorityGroup)


NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);   #选择第1组


NVIC_PriorityGroup_0 => 选择第0组      //就是全部为响应优先级,所有的中断都不能抢占其他中断。


NVIC_PriorityGroup_1 => 选择第1组     //两个抢占优先级


NVIC_PriorityGroup_2 => 选择第2组     //4个抢占优先级


NVIC_PriorityGroup_3 => 选择第3组     //8个抢占优先级


NVIC_PriorityGroup_4 => 选择第4组     //16个抢占优先级,没有响应优先级。所有中断到来时均能按照优先级高低抢占其他优先级的中断。


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


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 家用电器遥控器

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外开关

  • DS1669数字电位器

  • HA1377 桥式放大器 BCL 电容 17W(汽车音频)

    相关电子头条文章