STM32 中断优先级设置或配置

STM32F103XXX 中断优先级设置或配置

STM32 中断系统系统是非常复杂的。如果是搞不清楚计算机底层硬件或计算机工作原理的人,是很难搞懂中断系统。作为普通程序员只要会使用也未尝不可呀!我认为会使用就很好了,因为越是底层东西厂商也不需要用户去深入去理解,会用行就行。

STM32F103XXX系列的中断有如下几个问题你搞明白了,就很容易使用它了。

中断分组NVIC_PriorityGroup:既然要分组,你就会问STM32F103XXX系列能分几组?能分五组。它的组号是从零开始的。不同的组号还有老大、老二、老三、老四、老五区分。组0号是老大,组4号是老五。中间就是老二 老三 老四。注意没有组 5号的存在。在STM32库函数里它们都有自己的英文名字。

老大的英文名称:NVIC_PriorityGroup_0
老二的英文名称:NVIC_PriorityGroup_1
老三的英文名称:NVIC_PriorityGroup_2
老四的英文名称:NVIC_PriorityGroup_3
老五的英文名称:NVIC_PriorityGroup_4

	*STM32F103XXX中有两个优先级的概念:抢占优先级和响应优先级,也有把响应优先级称作“亚优先级”或“副优先级,每个中断源都需要被指定这两种优先级,在STM32库函数里它们都有自己的名字* 

抢占优先级英文名称:Preemptionpriority。
响应优先级英文名称:SubPriority。

一旦分组确定,这个组可以提供的抢占优先级的个数和响应优先级大的个数
当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。
NVIC_PriorityGroup_0大于NVIC_PriorityGroup_1大于NVIC_PriorityGroup_2大于NVIC_PriorityGroup_3大于NVIC_PriorityGroup_4大于NVIC_PriorityGroup_4
在不同的组里分配(NVIC_PriorityGroup)可以分配到抢占优先级和响应优先级英是不同的。请看下表

组 bit[7-4](共4位 分配结果
0 0:4 0位抢占优先级,4位响应优先级
1 1:3 1位抢占优先级,3位响应优先级
2 2:2 2位抢占优先级,2位响应优先级
3 3:1 3位抢占优先级,1位响应优先级
4 4:0 4位抢占优先级,0位响应优先级

/* 配置GPIO中断 */
void STM32EXTI_Configuration(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_ClearITPendingBit(EXTI_Line5);// 清除EXTI线路挂起位
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5);// 选择GPIO管脚用作外部中断线路
EXTI_InitStructure.EXTI_Line = EXTI_Line5;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);// 初始化外设EXTI寄存器
}

/* STM32配置抢占优先级和响应优先级 */
void STM32NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //中断分组
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; //设置通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //设置抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //响应优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ak.xu_40810378

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

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

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

打赏作者

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

抵扣说明:

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

余额充值