STM32——NVIC中断优先级管理

目录

NVIC简述

NVIC中断优先级分组

单片机中断数量对比

 单片机定时器优先级对比

 STM32单片机中断优先级分组

分组配置寄存器SCB->AIRCR:

NVIC中断优先级设置

抢占优先级与响应优先级的作用

NVIC实际应用

分组设置

 优先级设置


NVIC简述

  • NVIC(Nested Vectored Interrupt Controller):​​​​​中断控制器,用于总体管理异常,称之为“内嵌向量中断控制器”。

NVIC中断优先级分组

单片机中断数量对比

  • STM32单片机:由CM3剪裁而来,以STM32F103为例其就含有60个可屏蔽中断
  • 51单片机:仅有五个中断

 单片机定时器优先级对比

  • STM32单片机:因中断较多,用户需要根据自己需求设计中断优先级的先后
  • 51单片机:因仅有五个定时器,由芯片固定中断优先级供客户使用

 STM32单片机中断优先级分组

  • 原因:因 STM32 需要用户自己设计中断优先级,中断优先级分组应运而生
  • 分组的作用:根据客户需求,设置抢占优先级与响应优先级分别占几位
  • 如何分组:由 3bit ( AIRCR[10:8] ) 控制抢占优先级与响应优先级分别占几位
  • 抢占优先级与响应优先级:由 4bit ( IP bit[7:4] ) 控制不同的优先级决定中断发生的先后

分组配置寄存器SCB->AIRCR:

AIRCR[10:8]IP bit[7:4]分配情况分配结果
01110:40位抢占优先级:4位响应优先级
11101:31位抢占优先级:3位响应优先级
21012:22位抢占优先级:2位响应优先级
31003:13位抢占优先级:1位响应优先级
40114:04位抢占优先级:0位响应优先级

分配结果简述(以2组为例):

  • 要配置2位抢占优先级,2位响应优先级,就需先配置 AIRCR[10:8]的数值为101
  • 抢占优先级占2位有4种选择,响应优先级占2位有4种选择,故中断共可配置16种优先级

NVIC中断优先级设置

抢占优先级与响应优先级的作用

  • 高抢占优先级可以打断正在进行的低抢断优先级
  • 抢占优先级相同时,高响应优先级不可以打断低响应优先级
  • 抢占优先级相同时,当两个中断同时发生的情况下,响应有限级高的先执行
  • 如果抢占和响应有限级均相同,则看哪个中断先发生

NVIC实际应用

分组设置

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断分组,一般在初始化中进行

注:一般情况下,系统代码执行过程中,只设置一次中断优先级分组,设置好分组之后一般不会再改变分组。随意改变分组会导致中断管理混乱,程序出现意想不到的执行结果。

 优先级设置

	NVIC_InitTypeDef NVIC_InitStructure; //结构体重命名
	
    //set NVIC 
	NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //选择通道(要中断的对象)
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //设置抢占优先级
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //设置响应优先级
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //通道使能
	NVIC_Init(&NVIC_InitStructure);  //根据以上参数初始化NVIC寄存器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白变形计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值