【问题标题】:Two external interrupts with same priority at the same time (Cortex-M)?同时具有相同优先级的两个外部中断(Cortex-M)?
【发布时间】:2018-02-01 16:21:33
【问题描述】:

我对 Cortex-M 异常(IRQ 中断)有或多或少的理论问题。假设我们有两个外部中断 PINT0 和 PINT1 由相同的外部信号触发。两个中断(在 NVIC 寄存器 IPR0 中)都设置了相同的优先级,比如说 0(默认)。 NVIC如何处理这种情况?这两个中断的NVIC向量号有影响吗?

谢谢!

【问题讨论】:

    标签: exception interrupt


    【解决方案1】:

    根据您拥有的 NVIC 版本(即 Cortex M3 与 Cortex M0),有中断优先级,可能有子优先级,最后会有硬件优先级。

    中断优先级

    您所指的优先级是中断优先级。优先级高于当前上下文的中断请求(无论是非中断还是中断)将中断该上下文。与当前上下文具有相同优先级的中断请求不会中断。在您描述的情况下,总是首先服务一个中断,然后是另一个。先维修哪一个取决于其他一些因素...

    次优先级

    NVIC 的某些变体具有子优先级。仅针对这种情况存在子优先级。您有两个中断,您不希望一个中断另一个,但是如果两者都处于挂起状态,您希望确保一个将在另一个之前得到服务。子优先级允许您仅指定这一点。在您的示例中,如果它们具有不同的子优先级,则将首先为具有较高子优先级(较低编号)的那个提供服务。如果它们相同,那么还有最后一个因素......

    硬件优先级

    您在帖子中一针见血。如果子优先级不是一个因素,或者子优先级也相等,则 NVIC 中的请求号是最后一个因素,其中较低的请求号具有较高的硬件优先级。

    在您描述的特定情况下,两者都将 IPR 设置为零,这意味着两者的优先级和任何子优先级都将为零,因此硬件优先级将打破“平局”,而较低的请求号将首先得到服务。

    【讨论】:

    • 请注意,“中断优先级”在手臂皮质中通常称为“抢占优先级”。
    猜你喜欢
    • 2022-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 2010-09-09
    • 2016-05-21
    • 1970-01-01
    相关资源
    最近更新 更多