• 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
  • 相关阅读:
    公厕智能感应皂液盒,无液手机信息提醒
    Lingo小记(运算符及联系)
    leetcode刷题日志-28.找出字符串中第一个匹配项的下标
    健身房会员管理系统
    阿里云/腾讯云被攻击后怎么秒解黑洞
    【C语言数据结构】查找-顺序查找&折半查找
    【最有效】解决anaconda的虚拟环境重复目录问题
    这个微信隐藏代码,你们现在知道还不晚
    嵌入式Linux驱动开发(同步与互斥专题)(一)
    循环神经网络(RNN)实现股票预测
  • 原文地址:https://blog.csdn.net/weixin_42915934/article/details/126556100