STM32中断里的那些事,你都知道吗?


在这里插入图片描述

1.抢占优先级和响应优先级

STM32 的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,其属性编号越小,表明它的优先级别越高。

抢占

是指打断其他中断的属性,即因为具有这个属性会出现嵌套中断(在执行中断服务函数A 的过程中被中断B 打断,执行完中断服务函数B 再继续执行中断服务函数A)
三.例如:
在这里插入图片描述
谁能打断谁?

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

2.EXTI15_10_IRQn与EXTI9_5_IRQn的区别

EXTI0_IRQChannel :表示的是外部中断线EXTI0对应的中断函数。 EXTIN_IRQn :外部中断向量
EXTIN_IRQHandler:中断服务程序入口

2.1 中断线

IO对应外部中断线如下: PA0,PB0,PC0,PD0对应的是EXTI0中断线。
PA8,PB8,PC8,PD8对应的是EXTI8中断线。
PA15,PB15,PC15,PD15对应EXTI5中断线。

PXY对应的是EXTIY中断线,其中X为(A,B,C,D,E,F…)

2.2 中断函数

EXTI0对应的中断函数为EXTI0_IRQChannel;
EXTI1对应的中断函数为EXTI1_IRQChannel;
EXTI2对应的中断函数为EXTI2_IRQChannel;
EXTI3对应的中断函数为EXTI3_IRQChannel;
EXTI4对应的中断函数为EXTI4_IRQChannel;
EXTI5 -> EXTI9对应的中断函数为EXTI9_5_IRQHandler;
EXTI10 ->EXTI15对应的中断函数为EXTI15_10_IRQHandler;

注意:

例如:
PA11 对应的是中断线EXTI11,
对应的中断函数是EXTI15_10_IRQHandler
如果写出EXTI9_5_IRQHandler是不对的
一定要看清楚引脚的大小。

3. EXTI和NVIC的关系

3.1 NVIC(嵌套向量中断)

NVIC是Cortex-M3核心的一部分,用于为中断分组,从而分配抢占优先级和响应优先级

3.2 EXTI(外部中断):

1.EXTI是ST公司在其STM32产品上扩展的外中断控制。
2.它负责管理映射到GPIO引脚上的外中断和片内几个集成外设的中断,以及 软件中断。
3.其输出最终被映射到NVIC的相应通道。
4.配置EXTI中断的过程必然包含对NVIC的配置。

相当于EXTI是NVIC的一个儿子。

3.3 配置流程

①初始化I0口为输入。
GPIO_ Init();
②开启IO口复用时钟。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
③设置IO口与中断线的映射关系。
void GPIO_ EXTILineConfig();
④初始化线上中断,设置触发条件等。
EXTl_Init();
⑤配置中断分组(NVIC),并使能中断。
NVIC_Init();
⑥编写中断服务函数。
EXTlx_lRQHandler();
⑦清除中断标志位
EXTL ClearITPendingBit(); 注意:此步尤为重要

如果进入中断不清除标志位,那么这一中断服务程序结束后,由于标志位还是置位的并且中断是允许的,那么还会再次进入该中断,就会发生一直在执行中断程序的情况


总结

不断深入,不断补充。

  • 15
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值