STM32 NVIC中断优先级管理通过结构图快速理解

STM32 NVIC中断优先级管理通过结构图快速理解


📑抢占优先级和响应优先级基本常识

  • 🌿抢占优先级的级别高于响应优先级。
  • 🌿抢占优先级数值编号越小,所代表的优先级就越高;同理,响应优先级也是如此。
  • 🔖HAL优先组函数:
c 复制代码
/**
  * @brief  Sets the priority grouping field (preemption priority and subpriority)
  *         using the required unlock sequence.
  * @param  PriorityGroup: The priority grouping bits length. 
  *         This parameter can be one of the following values:
  *         @arg NVIC_PRIORITYGROUP_0: 0 bits for preemption priority
  *                                    4 bits for subpriority
  *         @arg NVIC_PRIORITYGROUP_1: 1 bits for preemption priority
  *                                    3 bits for subpriority
  *         @arg NVIC_PRIORITYGROUP_2: 2 bits for preemption priority
  *                                    2 bits for subpriority
  *         @arg NVIC_PRIORITYGROUP_3: 3 bits for preemption priority
  *                                    1 bits for subpriority
  *         @arg NVIC_PRIORITYGROUP_4: 4 bits for preemption priority
  *                                    0 bits for subpriority
  * @note   When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible. 
  *         The pending IRQ priority will be managed only by the subpriority. 
  * @retval None
  */
void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
{
  /* Check the parameters */
  assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));
  
  /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */
  NVIC_SetPriorityGrouping(PriorityGroup);
}
  • 🌿对于STM32f1系列,可分配有4组:
    • 🍁NVIC_PRIORITYGROUP_0
c 复制代码
HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_0);
HAL_NVIC_SetPriority(TIM5_IRQn, 0, 15);//中断号,抢占优先级(0),子优先级(0-15)
    • 🍁NVIC_PRIORITYGROUP_1
c 复制代码
HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_1);
HAL_NVIC_SetPriority(TIM5_IRQn, 1, 7);//中断号,抢占优先级(0-1),子优先级(0-7)
    • 🍁NVIC_PRIORITYGROUP_2
c 复制代码
HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_2);
HAL_NVIC_SetPriority(TIM5_IRQn, 3, 3);//中断号,抢占优先级(0-3),子优先级(0-3)
    • 🍁NVIC_PRIORITYGROUP_3
c 复制代码
HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_3);
HAL_NVIC_SetPriority(TIM5_IRQn, 7, 1);//中断号,抢占优先级(0-7),子优先级(0-1)
    • 🍁NVIC_PRIORITYGROUP_4
c 复制代码
HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
HAL_NVIC_SetPriority(TIM5_IRQn, 15, 0);//中断号,抢占优先级(0-15),子优先级(0)
相关推荐
李boyang2 小时前
STM32H5_Bootloader与IAP升级机制深度解析
stm32·iap·bootloader
达子6664 小时前
Zephyr RTOS 学习系统:第一阶段 —— 入门篇
stm32·单片机·嵌入式硬件
‎ദ്ദിᵔ.˛.ᵔ₎9 小时前
STM32入门第一课:32位MCU
stm32·单片机
Freedom_my11 小时前
STM32简单项目
stm32·单片机·嵌入式硬件
周洲083012 小时前
STM32+ESP8266 WiFi 远程环境监测平台|本地 OLED 显示 + TCP 上传电脑 / 手机
stm32·tcp/ip·电脑
GeekArch12 小时前
第8讲:裸机单片机项目——Vibe快速迭代的最优边界
c语言·stm32·单片机·嵌入式硬件·mcu·物联网·ai编程
辰哥单片机设计1 天前
STM32音乐播放器
stm32·单片机·嵌入式硬件
周洲08301 天前
STM32 串口指令控制系统|上位机下发命令控制 LED、继电器,通用指令解析框架
stm32·嵌入式硬件·mongodb
嵌入式-老费1 天前
esp32开发与应用(和stm32f103用spi通信)
stm32·单片机·嵌入式硬件
GeekArch2 天前
第5讲:嵌入式场景二范式决策树:什么情况快写、什么情况严写
人工智能·stm32·单片机·mcu·物联网·决策树·机器学习