您好!
我想在 CPU 运行时将 ISR 的类型从 IRQ 更改为 FIQ 模式。 我可以只调用 vimEnableInterrupt()函数来更改中断类型,还是需要使用#pragma interrupt(function_name ,"FIQ")定义另一个函数并将 VIM 的向量地址更改为该函数?
此致、
Snaku
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.
您好!
我想在 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。