NVIC嵌套向量中断控制器

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

库函数程序(以USART1为例)

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置优先级分组为2
//Usart1 NVIC 配置

  //方式一,配置结构体
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级为3
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;		//响应优先级为3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQ通道使能
NVIC_Init(&NVIC_InitStructure);	//根据设置的参数初始化NVIC寄存器

  //方式二,直接调用API函数
NVIC_SetPriority(USART1_IRQn, 0x0f);
NVIC_EnableIRQ(USART1_IRQn);

优先级分组

  中断优先级寄存器IP为8位,原则上可为外部中断设置的优先级为0~255,实际上只用到了高4位就够用了,这高四位又被分为抢占式优先和响应式优先两种,因为只用到了高四位,所以一共有5个分组,NVIC_PriorityGroup_0~4,每个组分配的抢占式优先和响应式优先非常容易记混淆,我是这样记得:几组就是给抢占式优先分配了几个位宽,比如NVIC_PriorityGroup_1就是高1位给抢占式优先,可以取0~1,低3位给响应式优先,可以取0~7。

中断优先有下面几个规则:

1、优先级号越低者,优先级越高,PreemptionPriority=3的优先级就低于PreemptionPriority=0

2、只有抢占式有限可以中断嵌套,抢占式优先级高的可以打断抢占式优先级低的中断

3、抢占式优先级与响应式优先级都相同的,则比较它们的硬件中断编号,中断编号越小,优先级越高。(硬件中断编号从中断向量表当中查看)

  

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

small_planet

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

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

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

打赏作者

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

抵扣说明:

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

余额充值