STM32 抢先优先级和响应优先级的详细介绍的中断配置 (转载)
来源:互联网 发布:刀哥swift3.0源码 编辑:程序博客网 时间:2024/05/16 11:29
对于这 4bit 的中断优先级控制位还必须分成 2 组看:从高位开始,前面是定义抢先式优
先级的位,后面用于定义子优先级(即所谓的响应优先级)。4bit 的分组组合可以有以下几种形式:
编 号 分配情况
0:4 无抢先式优先级,16 个子优先级
1:3 2 个抢先式优先级,8 个子优先级
2:2 4 个抢先式优先级,4 个子优先级
3:1 8 个抢先式优先级,2 个子优先级
4:0 16 个抢先式优先级,无子优先级
上电 Reset 后,寄存器 AIRC 中 PRIGROUP[10:8]的值为 0(编号 0) ,因此此时系统使用 16 个抢先优先级,无子优先级。另外由于所有外部中断通道的优先级控制字 PRI_n 也都是 0,所以根据上面的定义可以得出,此时 68 个外部中断通道的抢先优先级都是 0 号,没有子优先级的区分。故此时不会发生任何的中断嵌套行为,谁也不能打断当前正在执行的中断服务。当多个中断出现后,则看它们的中断向量地址:地址越低,中断级别越高,STM32优先响应。
如果在你的系统中使用了 TIME2(中断通道 28)和 EXTI0(中断通道 6)两个中断,而TIME2 中断必须优先响应,而且当系统在执EXIT0 中断服务时也必须打断(抢先、嵌套),就必须设置 TIME2 的抢先优先级比 EXTI0 的抢先优先级要高(数目小) 。假定 EXTI0 为 2 号抢先优先级,那么 TIME2 就必须设置成 0 或 1 号抢先优先级。这些工作需要在 AIRC 中的PRIGROUP 设置完成,确定了整个系统所具有的优先级个数后,再分别对每个中断通道(设备)进行设置。
具体优先级的确定和嵌套规则。ARM cortex_m3(STM32)规定 a/ 只能高抢先优先级的中断可以打断低抢先优先级的中断服务,构成中断嵌套。 b/ 当 2(n)个相同抢先优先级的中断出现,它们之间不能构成中断嵌套,但 STM32 首先响应子优先级高的中断。 c/ 当 2(n)个相同抢先优先级和相同子优先级的中断出现,STM32 首先响应中断通道所对应的中断向量地址低的那个中断(见 ROM0008,表52) 。
具体一点:
0 号抢先优先级的中断,可以打断任何中断抢先优先级为非 0 号的中断;1 号抢先优先级的中断,可以打断任何中断抢先优先级为 2、3、4 号的中断;……;构成中断嵌套。 如果两个中断的抢先优先级相同,谁先出现,就先响应谁,不构成嵌套。如果一起出现(或挂在那里等待),就看它们 2 个谁的子优先级高了,如果子优先级也相同,就看它们的中断向量位置了。
- STM32 抢先优先级和响应优先级的详细介绍的中断配置 (转载)
- STM32的抢占优先级和响应优先级
- 中断响应优先级和中断处理优先级的区别
- STM32F4中断抢占优先级和响应优先级的概念
- stm32中断抢占优先级和响应优先级区别
- stm32 设置systick中断抢先式优先级
- stm32 设置systick中断抢先式优先级
- stm32 设置systick中断抢先式优先级
- stm32 设置systick中断抢先式优先级
- stm32 设置systick中断抢先式优先级
- 理解STM32的中断优先级
- stm32的中断嵌套优先级
- stm32 中断优先级配置
- STM32 中断优先级讲解(转载)
- STM32中断优先级彻底讲解(转载)
- stm32(二) stm32中断优先级的设置
- stm32(二) stm32中断优先级的设置
- stm32(二) stm32中断优先级的设置
- 第一篇CSDN的博客
- HTTP 知识点
- mysql 学习记录(六)-- 查看引擎、myisam引擎、自增长、主外键关联、memory引擎、merge引擎
- 苹果最新 Mac OS X El Capitan 正式版系统 dmg 镜像下载 / 升级安装程序
- linux常用命令
- STM32 抢先优先级和响应优先级的详细介绍的中断配置 (转载)
- 又是一番风味
- 多线程知识点 自定义Operation
- 自定义tableview Header和Footer的样式
- 数据挖掘之数据预处理
- AutoLayout (自动布局)
- 怎样找到一个view所在的控制器(viewController)
- 数据库
- GCD 线程