• STM32 中断详解


    NVIC 嵌套中断向量控制器(Nested Vectored Interrupt Controller)

    1、中断优先级分组

    STM32 中断优先级分为两种:抢占式优先级(可嵌套)、子优先级(不可嵌套)。STM32 中断优先级分组具体由 4 位二进制决定:

    分组号4 bit 分配情况说明
    第0组0 : 4无抢占式优先级,16 个子优先级
    第1组1 : 32 个抢占式优先级,8 个子优先级
    第2组2 : 24 个抢占式优先级,4 个子优先级
    第3组3 : 18 个抢占式优先级,2 个子优先级
    第4组4 : 016 个抢占式优先级,无子优先级

    可嵌套是指抢占式优先级高的中断可以抢占抢占式优先级低的中断的CPU使用权,不可嵌套是指子优先级高的中断不能抢占子优先级低的中断的CPU使用权。

    中断优先级分组标准库库函数:

    void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)
    
    • 1

    NVIC_PriorityGroup_0 => 选择第 0 组
    NVIC_PriorityGroup_1 => 选择第 1 组
    NVIC_PriorityGroup_2 => 选择第 2 组
    NVIC_PriorityGroup_3 => 选择第 3 组
    NVIC_PriorityGroup_4 => 选择第 4 组

    例如配置为第 2 组:

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    
    • 1

    注:
    如果用户没有设置优先级分组,即用户没有调用NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup),则优先级分组默认设置为分组 0,即无抢占式优先级、16个子优先级。

    2、中断初始化

    2.1 中断初始化结构体配置

    结构体类型定义如下:

    typedef struct{
      uint8_t NVIC_IRQChannel;             
      uint8_t NVIC_IRQChannelPreemptionPriority;  //抢断优先级
      uint8_t NVIC_IRQChannelSubPriority;  //响应优先级      
      FunctionalState NVIC_IRQChannelCmd;      
    } NVIC_InitTypeDef;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    例如 STM32 外部中断 0 配置:

    NVIC_InitTypeDef EXTI_NVIC_InitStructure;
    EXTI_NVIC_InitStructure.NVIC_IROChannel = EXTI0_IRQn;
    EXTI_NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//抢占式优先级
    EXTI_NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //子优先级
    EXTI_NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.2 中断初始化标准库库函数

    void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)
    
    • 1

    中断初始化标准库库函数调用:

    NVIC_Init(&EXTI_NVIC_InitStructure);
    
    • 1
  • 相关阅读:
    认识String
    gitlab+jenkins+k8s实现持续集成springboot+springcloud
    汇编逆向-控制台
    如何优雅的删除HashMap元素
    gitee的注册和代码提交
    unity面试题(性能优化篇)
    react hook 获取setState的新值
    Java Web 7 JavaScript 7.7 事件监听 && 7.8 表单验证案例
    TiUP FAQ
    掌握Pillow:Python图像处理的艺术
  • 原文地址:https://blog.csdn.net/weixin_42915934/article/details/126556100