快捷搜索:  as

STM32单片机中抢占优先级和响应优先级的表达方式

NVIC: Nested vectored interrupt controller, 嵌套中断向量节制器。

中断与非常:

所有能打断正常履行流的事故都称为非常。 非常与中断的差别在于, 中断哀求是来自于Cortex内核外部, 比如各类片上外设, 外部中断哀求等, 它们对付内核是”异步”的; 而非常则是因为Cortex内核在履行指令或者造访存储等操作时所孕育发生的, 对付Cortex内核来说是属于”同步”的(可以拜见Cortex M3势力巨子指南), 非常和中断一样平常可以不加区分的应用。

Cortex内核可以支持多达240个外部中断, 编号16 – 255. 编号1 – 15的为系统非常, 编号0未被应用。

Cortex支行中断嵌套, 容许高优先级的中断抢占低优先级的中断。 Cortex M3/M4可支行多达256级的可编程优先级和128级的抢占, 但有3个系统非常优先级固定, 并且优先级为负数, 高于其它任何非常, 这三个非常分依次为 复位, NMI, Hard Fault.

NMI是Non-Maskable Interrupt(弗成樊篱中断)缩写, 在STM32F4中, NMI被连接到时钟安然系统CCS(Clock security system)非常上。

Hard Fault是总线fault, 存储治理fault, 用法fault所孕育发生的结果, 具体信息可以参考Cortex M3势力巨子指南。

优先级寄存器

如上所述, Cortex M3/M4支行多达256级的可编程优先级和128级抢占, 每其中断应用一个8位的寄存来设置设置设备摆设摆设优先级。 但实际一款芯片会根据环境做适当的精简, 裁剪掉落表达优先级的几个低端有效位, 以削减优先级的级数。然则不管应用若干位来表达优先级, 都因此MSB对齐的, 这主如果为了避免法度榜样在不合器件之间移植时不会呈现优先级顺序的变动。

抢占优先级和相应优先级

相应优先级也叫做 亚优先级 或者 子优先级, 每一其中断都有这两种优先级属性。 当一个低优先级的中断正在履行时, 假如有更高优先级的中断哀求, 系统将会相应这其中断, 即发生中断嵌套。

假如两其中断的优先级相同, 则后来的中断要等到先来的中断履行完毕后才会被相应。 然则假如两其中断同时到达(或者都在挂起状态), NVIC会根据它们相应优先级的上下来抉择相应那一个。

假如它的的相应优先级也相同, 那么NVIC会根据它们在中断向量表中的排序先后来抉择先相应那一个。

在STM32中应用了4bit来表达抢占优先级和相应优先级, 有以下5种分组要领:

可见STM32一共供给了16级中断优先级.

滥觞;21ic

您可能还会对下面的文章感兴趣: