This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM2634-Q1:优先处理 ISR

Guru**** 2546040 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1159835/am2634-q1-pre-emptive-or-prioritizing-isrs

器件型号:AM2634-Q1

我的系统运行来自 PWM、GPI、计时器和 ECAP 的大量 ISR。  我想将我的 PWM 和外部 GPI ISR 优先于所有其他 ISR。  

在处理当前"较低"优先级 ISR 之前、如何设置和处理将检查 PWM 或 GPI ISR 标志是否未设置的 ISR 处理程序?

提前感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Tim

    在 R5中、我们有用于中断管理的 VIM。  每个中断都有其自己的4位可编程优先级--> R5FST_VIM_PRI_INT_j 寄存器。

    VIM 通过一个具有更高优先级的中断来支持当前活动中断的中断。  

    VIM 优先级方案:00 =最高优先级- 15 =最低优先级。

    一个中断从挂起状态变为活动状态时 、该中断被载入 相应的活动寄存  器、并且所有优先级相等或较低的中断都被屏蔽。

    2. 如果在该中断被清除之前、另一个较高优先级的中断到达、 则 IRQn 有效、该中断正常挂起。

    3.如果 CPU 将此 中断切换到活动 状态,则当前活动的中断将被压入堆栈。 当通过读取 R5Fss_VIM_FIQVEC/ R5Fss_VIM_IRQVEC 寄存  器清除中断时、如果堆栈上有任何中断、第一个条目会弹出并返回 R5Fss_VIM_ACTIQ / R5Fss_VIM_ACTIIRQ 寄存器、以便软件保留原始上下文并继续先前的操作。

    更多详细信息、请参阅  TRM 的10.2.1.8 VIM 中断处理部分。

    可以在构建中断时设置中断的优先级。

    Hwip_Params HwiParams;
    Hwip_Params_init (&HwiParams);
    HwiParams.priority = priority_number;
    SDK 有一个用于3个计时器的中断优先级示例。 可以在 syscfg 中配置计时器中断、但对于其他外设、我们需要通过提供优先级在代码中构建中断。
    请参阅 ti_DPL_config.c、了解示例中优先级的给出方式。
    示例位置- examples\kernel\DPL\interrupt_Prioritization。
    此致
    Sri Vidya