初学STM32——笔记(第三弹)

本文介绍了STM32中断优先级的两种类型,可编程和不可编程,以及如何通过抢占优先级、子优先级和IRQ编号来决定中断响应顺序。重点讲解了中断优先级分组和嵌套向量中断控制器的作用,以及如何使用HAL库设置中断优先级。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32中断优先级

一、中断优先级的核心概念

  1. 中断优先级分为两种:可编程和不可编程;
  2. 对于STM32的中断优先级,决定着内核优先响应谁的中断请求;
  3. 小值优先原则,中断优先级数值越小,中断会被优先响应(包括后续所提到的抢占优先级与子优先级);
  4. 中断优先级按照优先级分组配置。

 二、中断的优先级分组

  1.  以F103为例,STM32上只使用了M3内核支持的8bit优先级的高4位bit。也就是说STM32支持2*4个优先级(16个)
  2. 在F103上,使用这个4bit,组织成五组优先级分组。这五组中,每组分为1个抢占组、1个子优先级组。

三、优先级分组

 

例如:B中断正在执行,A中断抢占优先级数值比B中断(小值优先原则:A抢占优先级比B高),A中断则抢过B中断的使用权,响应A的中断服务函数,A中断执行完再交回B。

IRO编号:芯片公司固定好的一个编号,不会有重复的,编号介绍在“stm32f103xc.h”里有介绍

  1. 通过优先级分组,可以管理中断的响应顺序。
  2. 只有抢占优先级才有抢占中断权限,发生中断嵌套。
  3. 如果中断抢占优先级相同,不发生抢占行为。
  4. 如果多个挂起的中断具有相同的抢占优先级,则子       优先级高的先行,如果子优先级相同,则IRO编号小的先行。
  5. 可编程的优先级,通过嵌套向量中断控制器(NVIC)实现。

 

四、嵌套向量中断控制器(NVIC)功能

 

注:

  1. 最重要的函数是设置中断优先级的函数,但是一般不直接使用上方表格中的设置中断优先级的函数,因为它没有体现优先级分组的思想,可以在官方给出的头文件“core_cm3.h”中查看(“core_cmx.h”中F103的x为3;H7xx的x为7)
  2. 设置中断优先级函数的HAL库思想
  3. 利用HAL库思想设置中断优先级的使用例子:

五、中断优先级的总结

  1. 已经有中断在工作。根据抢占优先级决定,新来的中断打不打断原有中断,打断就发生中断嵌套,不打断就挂起等着。
  2. 中断都在挂起等待的状态,先按抢占优先级排序,抢占优先级高的先行,抢占优先级相同,就按子优先级排序,子优先级高的先行,子优先级还相同,那就按IRQ编号小的先行。
  3. 所以:抢占优先级>子优先级>IRQ编号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张鱼小丸子_微辣

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

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

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

打赏作者

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

抵扣说明:

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

余额充值