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.

[参考译文] TMS570LS3137:如何使一个 ISR 被一个更高优先级的 IRQ 抢先

Guru**** 2524550 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/811368/tms570ls3137-how-to-make-one-isr-preempted-by-a-higher-priority-irq

器件型号:TMS570LS3137

大家好、

在针对 VIM 的 TRM spnu499c 第15.2.2段中、有一个提到"当一个 IRQ 中断被接收时、CPU 通过设置 CPSR 位7来禁用其它 IRQ 中断。 当一个 FIQ 中断被接收时、CPU 通过设置 CPSR 位6和7来禁用 IRQ 和 FIQ 中断。'

FIQ 运行良好、因为它将取代正在运行的 ISR。 但是、如何使一个特定的长 ISR 可被其他更高优先级的 IRQ 抢占?

我在第15.2.3段中使用"硬件矢量中断(自动分派到 ISR、仅限 IRQ)"模式。

谢谢!

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

    你好、Chuck、

    器件不支持嵌套中断。 如果 CPU 正在处理一个中断、则传入的中断必须等待前一个中断完成。

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

    感谢 GJ、

    看起来唯一简单的方法是将 ISR 分为 FIQ 和 IRQ、但同样、每个 IRQ 的执行时间必须非常短。

    此致。