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:vimREG->IRQINDEX 寄存器值在退出当前 ISR 之前发生变化。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1082596/tms570ls3137-vimreg--irqindex-register-value-changing-before-exit-the-current-isr

部件号:TMS570LS3137
“线程: 测试”中讨论的其它部件

大家好,团队

在我们的一个项目中,我们需要阅读 VIM IRQ 索引寄存器以查找 ISR 内部的当前 ISR。  vimREG->IRQINDEX 寄存器在退出当前 ISR 之前会发生一些变化。

示例:

RTI ISR 指数为3。 在下面的示例中,我们正在检查  vimREG->IRQINDEX 寄存器的3。有时,此值不等于3。

代码:
/*用户码开始(8)*/
外部 uint8_t RTI_Flag;
UINT32_t 计数器=0;
/*用户代码结束*/
#pragma weak (rtiNotification)
作废通知(UINT32通知)

/*在用户代码开始和用户代码结束之间输入用户代码。 *
/*用户代码开始(9)*/

/*设置标志-用于触发 SPI 传输持续1毫秒*/
RTI_Flag = 1;

/*清除计数器*/
计数器= 0;

/*保留 ISR */
while (计数器< 0x1000)

++计数器;
}

/*检查 VIM IRQ 索引寄存器- 0x03 (RTI-IRQ 编号)*/
IF (vimREG->IRQINDEX!= 3)

计数器= 0;
}
/*用户代码结束*/
}e2e.ti.com/.../10_5F00_tms570Ls3137_5F00_index_5F00_test.zip

注:我们使用的是 TMS570LS3137 Hercules 开发板,我们已将项目文件附在此论坛上。

在此方面,请向我们提供支持,谢谢

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

    您好,

    寄存器 IRQINDEX 保留最高优先级 IRQ 中断的索引。 如果在 ISR 中读取 IRQINDEX 之前有另一个中断,IRQINDEX 将更新为新的中断号。

    您可以使用函数参数“通知”来确定哪个比较触发中断。

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

    您好,QJ Wang,

    我们在此项目中仅配置了 RTI 和 SPI,两者都在“中断”中配置。 正如您之前提到的,IRQINDEX 保留高优先级中断,RTI 是所有其他中断的最高优先级。我们已经检查了 RTI ISR 内部的寄存器,即使它正在更改或未使用正确的值进行更新。

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

    您好,Qj Wang,

    此索引更改发生在最高优先级 RTI 中断内,您可以再提出一个查询,以建议如何在 ISR 内读取 IRQ 索引。

    谢谢