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.

[参考译文] TMS570LS0714:如何在 CPU 运行时将 ISR 类型从 IRQ 更改为 FIQ 模式

Guru**** 2526700 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1360035/tms570ls0714-how-to-change-an-isr-type-from-irq-to-fiq-mode-while-cpu-is-running

器件型号:TMS570LS0714

您好!  

我想在 CPU 运行时将 ISR 的类型从 IRQ 更改为 FIQ 模式。 我可以只调用 vimEnableInterrupt()函数来更改中断类型,还是需要使用#pragma interrupt(function_name ,"FIQ")定义另一个函数并将 VIM 的向量地址更改为该函数?

此致、

Snaku

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

    Snaku、您好!

    我只是将一个中断的 RTI 比较0的中断类型从 IRQ 更改为 FIQ。 然后我在生成的代码中发现了两处更改。

    以下是它们:

    在上述两项中、第一个#pragma 中断更改不会对代码产生任何影响。 但我认为第二个变化很重要、它会决定中断实际上是 FIQ 还是 IRQ。

    如您所见、如果我们将 FIRQPRx 寄存器中的位置1、则对应的中断为 FIQ、否则为 IRQ。 您也可以在末端执行相同的操作。

    您还必须记住一点、如果您尝试同时使用 IRQ 和 FIQ、则应 调用函数 _enable_interrupt_而不是_enable_IRQ_interrupt_ 。

    因为 _enable_IRQ_interrupt_ API 将仅启用 IRQ 中断、但 _enable_interrupt_ API 将同时启用 IRQ 和 FIQ。

    对于 FIQ 示例代码、您可以参考看门狗的 NMI 中断生成代码、如下所示:

    (+)[常见问题解答] TMS570LC4357:如何使用数字看门狗-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    --
    谢谢。此致、
    Jagadish。

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

    您需要定义另一个具有相应属性的函数来进行 FIQ 处理。 这通常需要使用 pragma 指令#pragma INTERRUPT(function_name, "FIQ"),如。 此 pragma 告知编译器、应将该函数视为 FIQ 处理程序。