登录/注册

STM32的响应优先级

STM32的响应优先级

更多

STM32(基于 ARM Cortex-M 内核)的中断响应优先级由嵌套向量中断控制器(NVIC)管理,涉及两个关键概念:抢占优先级子优先级(响应优先级)。以下是中文解释:

  1. 优先级分组(Priority Grouping)

    • STM32 允许你将 NVIC 的优先级位(通常 4 位或更多)划分为两部分:
      • 抢占优先级(Preemption Priority):数值越小,优先级越高。高抢占优先级的中断可以打断(抢占)正在执行的低抢占优先级的中断。
      • 子优先级(Subpriority / Response Priority):也叫做响应优先级。数值越小,优先级越高仅当两个中断的抢占优先级相同且同时发生时,NVIC 会优先响应子优先级更高的中断。子优先级不能导致中断抢占
    • 通过设置 NVIC_SetPriorityGrouping() 函数(或修改 SCB->AIRCR 寄存器的 PRIGROUP 域)来选择分组方案。分组决定了抢占优先级和子优先级各占用多少位。
    • 常见分组方案(以 4 位优先级为例):
      • 组 0:0 位抢占优先级,4 位子优先级(16 个子优先级,无抢占)。
      • 组 1:1 位抢占优先级(2 个级别),3 位子优先级(8 个级别)。
      • 组 2:2 位抢占优先级(4 个级别),2 位子优先级(4 个级别)。(最常用)
      • 组 3:3 位抢占优先级(8 个级别),1 位子优先级(2 个级别)。
      • 组 4:4 位抢占优先级(16 个级别),0 位子优先级(相当于没有子优先级)。
  2. 优先级数值设置

    • 使用 NVIC_SetPriority(IRQn, priority) 函数为每个中断源(如 USART1_IRQn, TIM2_IRQn 等)设置优先级。
    • priority 参数是一个 0 到 15(对于 4 位优先级)的整数。这个数值越小,表示该中断的优先级越高。
    • 这个 priority 数值会根据你设置的优先级分组方案,被硬件自动拆解为对应的抢占优先级部分和子优先级部分。
  3. 中断响应规则

    • 抢占(嵌套):一个高抢占优先级的中断请求可以立即打断正在执行的低抢占优先级的中断服务程序。
    • 非抢占式排队:如果新来的中断请求的抢占优先级等于或低于当前正在执行的中断的抢占优先级,它不能抢占。此时:
      • 如果其抢占优先级等于当前中断,且其子优先级更高,它会在当前中断完成后立即得到响应(在抢占优先级相同的挂起中断中优先)。
      • 如果其抢占优先级低于当前中断,它必须等待当前中断及其所有更高抢占优先级中断完成后才能被响应。
    • 子优先级作用时机只在抢占优先级相同且多个中断同时(或几乎同时)挂起的场景下,决定哪个先被响应。它本身不能导致中断嵌套。

总结关键点:

示例(假设优先级分组为 2:4 个抢占级,4 个子级):

中断源 NVIC_SetPriority 值 (4-bit) 抢占优先级 子优先级 说明
中断 A 3 (0b0011) 0 (00) 3 (11) 抢占级最高
中断 B 5 (0b0101) 1 (01) 1 (01)
中断 C 5 (0b0101) 1 (01) 1 (01) 与 B 同级同时请求时顺序不确定(相同抢占和子优先级)
中断 D 6 (0b0110) 1 (01) 2 (10) 抢占级同 B/C,但子优先级低于 B/C
中断 E 15 (0b1111) 3 (11) 3 (11) 抢占级最低

重要提示:

理解抢占优先级和子优先级的区别以及分组设置是配置STM32中断系统的核心。

为什么有些STM32中断没有子优先级

看到一个交流群在讨论关于【关于STM32中断优先级的话题】,其中就有小伙伴提到:为什么有些STM32中断没有【子

2023-10-17 15:50:58

STM32 MCU通过STM32CubeMx配置NVIC怎么没有中断子优先级选项

时,不难发现一个问题,那就是怎么没有中断子优先级【或称响应优先级、副优先级

2023-09-09 09:25:32

中断优先级处理的原则及配置 抢占优先级响应优先级的区别

首先我们需要知道什么是中断优先级:中断优先级是CPU响应中断的先后顺序

2022-05-18 15:10:46

STM32F103芯片中断优先级以及FreeRTOS优先级设置

STM32F103只用了4个位来表达优先级,因此最多支持16级的可编程优先级

资料下载 李芳 2022-01-25 18:59:01

STM32NVIC中断优先级管理+思维导图

STM32NVIC中断优先级管理1. 优先级先后顺序抢占优先级高于

资料下载 吴湛 2022-01-14 15:29:56

STM32笔记之中断优先级和开关总中断

STM32中断优先级和开关总中断一,中断优先级:STM32(Cortex

资料下载 挽你何用 2022-01-14 15:24:52

stm32中断优先级分组

stm32中断优先级分组转载:http://news.eeworld.com.cn/mcu/article_2018053039408.html一、抢占优先级

资料下载 莫联雪 2022-01-14 15:04:46

STM32的中断:抢占优先级响应优先级资料下载

电子发烧友网为你提供STM32的中断:抢占优先级和响应优先级资料下载的电

资料下载 duke刘 2021-04-03 08:40:37

STM32F抢占优先级/响应优先级的区别是什么

STM32F抢占优先级/响应优先级的区别是什么

2021-11-16 07:16:31

STM32F407抢占优先级响应优先级有何区别

STM32F407中断有几个优先级?抢占优先级和响应

2021-10-19 09:03:53

NVIC中断优先级管理与中断优先级分组

NVIC中断优先级管理中断优先级分组:STM32F407系列把中断分为5个组:(0~4)对0-4每个中断设置一个抢占

2021-08-16 08:06:19

浅析stm32的中断嵌套优先级

stm32的中断嵌套优先级stm32NVIC优先级分组中断

2021-08-13 09:45:55

优先级判断STM32

最多可以有四位数)。二:优先级判断STM32(Cortex-M3)中有两个优先级的概念——抢占式

2021-08-13 06:50:02

stm32配置中断的优先级问题

在stm32开发中,我们可能需要多个串口同时收发,这时需要配置下中断的优先级问题。中断优先级中抢占

2021-08-13 06:24:23

STM32单片机中抢占优先级响应优先级的表达方式解析

Cortex支行中断嵌套, 允许高优先级的中断抢占低优先级的中断。 Cortex M3/M4可支行多达256级的可编程

2019-10-14 16:31:45

7天热门专题 换一换
相关标签