工具/软件:
在 F29x 中、PIPE 模块与 F28x 目标中的 PIE 模块大不相同。
我知道这个问题中的讨论: F29H850TU:如何在 C29 内核架构中嵌套相同的中断(例如 INT_TIMER0)? - C2000 微控制器论坛 — C2000︎ 微控制器 — TI E2E 支持论坛 表示不建议循环嵌套相同的中断。
我不是试图在内部嵌套相同的中断。
我只想在执行当前中断的 ISR 时检测是否触发了同一中断的另一个实例。
例如、INT_TIMER0 中断已配置为每 1 秒触发一次。
现在、假设与它对应的 ISR 需要超过 1 秒的时间来执行、并且在 ISR 完成之前、INT_TIMER0 会在 1 秒后再次触发
现在、如果发生这种情况、如何在当前中断 ISR 服务时检测是否发生了计时器中断的另一个实例?
INT_CTL_L_y 寄存器中该中断的 overflow_flag 位在 TRM 中似乎表明、只要触发了相同中断的另一个实例、它就会设置为 1、但我无法处理、因为它在第一个 ISR 调用本身中被设置、我无法理解为什么。
该处理器的 TRM 没有太多关于该标志位的使用说明、它似乎也依赖于同一寄存器的标志位、这并不是很清楚、正如我在 CCS 中看到、即使标志位保持为 0、overflow_flag 也设置为 1。
总而言之、我的问题是:
overflow_flag 位是否可用于检测在执行当前计时器中断 ISR 时是否再次触发了相同的计时器中断?
如果没有、是否有任何其他方法可以检测该情况、包括一些 CPU INT 栈位、或者以某种方法使用 INTSP 寄存器来检测此 ISR 任务溢出?