OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3878|回复: 1

STM32的NVIC中断以及抢占优先级和响应优先级

[复制链接]

221

主题

221

帖子

0

精华

高级会员

Rank: 4

积分
762
金钱
762
注册时间
2021-5-18
在线时间
28 小时
发表于 2021-11-15 14:06:45 | 显示全部楼层 |阅读模式
一、抢占优先级和响应优先级
STM32 的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,其属性编号越小,表明它的优先级别越高。
抢占,是指打断其他中断的属性,即因为具有这个属性会出现嵌套中断(在执行中断服务函数A 的过程中被中断B 打断,执行完中断服务函数B 再继续执行中断服务函数A),抢占属性由NVIC_IRQChannelPreemptionPriority 的参数配置。
而响应属性则应用在抢占属性相同的情况下,当两个中断向量的抢占优先级相同时,如果两个中断同时到达, 则先处理响应优先级高的中断, 响应属性由NVIC_IRQChannelSubPriority 参数配置。例如,现在有三个中断向量,如下表。

111.png
若内核正在执行C 的中断服务函数,则它能被抢占优先级更高的中断A 打断,由于B和C 的抢占优先级相同,所以C 不能被B 打断。但如果B 和C 中断是同时到达的,内核就会首先响应响应优先级别更高的B 中断。

二、NVIC 的优先级组
Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此STM32把指定中断优先级的寄存器位减少到4位,这4个寄存器位的分组方式如下:
第0组:所有4位用于指定响应优先级
第1组:最高1位用于指定抢占式优先级,最低3位用于指定响 应优先级
第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级
第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级
第四组:所有4位用于指定抢占式优先级

M3用8bits而STM32用高四位来表示抢占和子优先级:bit=1表示抢占;bit=0表示非抢占即子优先级;所以共有5中方案分组:
分组  Bit7 Bit6  Bit5  Bit4 说明:
第0组 0   0    0   0
第1组 1   0    0   0
第2组 1   1    0   0 抢占共有22=4(03);子优先级22=4(03),共44=16级嵌套
第3组 1   1    1   0  抢占共有23=4(07);子优先级21=2(01),共82=16级嵌套
第4组 1   1    1   1
到底谁优先:数字越小优先级越高,抢占级数字小的可剥夺抢占级数字大的
1抢占相同,子优先级不同:此时没有抢占剥夺,此时按照子优先级顺序排序
2抢占和子优先级都相同但有先后:此时无抢占剥夺,依照FIFO,前一个执行完了才能执行后者;
3抢占和子优先级都相同且同时到达:此时按照中断向量表顺序排先后

例如如下代码:

void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{
    if(htim->Instance==TIM3)
        {
                __HAL_RCC_TIM3_CLK_ENABLE();            //使能TIM3时钟
                HAL_NVIC_SetPriority(TIM3_IRQn,1,3);    //设置中断优先级,抢占优先级1,子优先级3
                HAL_NVIC_EnableIRQ(TIM3_IRQn);          //开启ITM3中断   
        }
       
         if(htim->Instance==TIM4)
        {
                __HAL_RCC_TIM4_CLK_ENABLE();            //使能TIM4时钟
                HAL_NVIC_SetPriority(TIM4_IRQn,1,2);    //设置中断优先级,抢占优先级1,子优先级2
                HAL_NVIC_EnableIRQ(TIM4_IRQn);          //开启ITM4中断   
        }
}

则TIM4的优先级比TIM3优先级高。

原文链接:http://bj.dyrs.com.cn/story/202111/1166004

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

668

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1926
金钱
1926
注册时间
2021-8-13
在线时间
262 小时
发表于 2021-11-15 14:35:05 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 17:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表