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.

[参考译文] TMS320F2800137:是否可以知道是否在中断上下文中调用了函数

Guru**** 2589265 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1404269/tms320f2800137-is-it-possible-to-know-if-a-function-is-called-in-interrupt-context

器件型号:TMS320F2800137

工具与软件:

大家好、快速提问。

C28x 处理器上是否可以检查是否从 ISR 上下文调用了函数? 在 CMSIS 中有_get_IPSR()可以用来检测它。 对于 C28x 是否有这样的方法?

谢谢!

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

    您好!

    我认为我们不能直接查看这一点、但我会咨询我们的设计专家并与您联系。

    用户可以有自己的全局标志、用户可以在 ISR 内部设置该全局标志、并检查函数内部的该标志值、以了解函数是在 ISR 内部还是外部调用的。  

    此致、

    Vivek Singh

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

    尊敬的 Vivek、

    感谢您的答复。 您是否设法与设计专家进行了探讨?

    可以使用标志、但我不喜欢实现。 这似乎是一种权变措施、如果开发人员忘记实现此标志、则非常容易出错。

    打开了 很多 在 C28x 器件中的中断寄存器、我找不到一个寄存器来保留用于未处理的中断的位。

    当一个中断触发时、必须通过调用 Interrupt_clearACKGroup 来清除它、对吧? 此函数写入 PIECTRL_BASE + PIE_O_ACK 寄存器。 这是什么意思? 是否可以利用此寄存器检查是否在 ISR 上下文中调用了函数?

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

    您好!

    没有 直接的方法来检查这一点。 PIEACK 会像 PIE 生成中断一样被设置、但这并不意味着 CPU ISR 会被执行。 请查看下图-

    此致、

    Vivek Singh