TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

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.

[参考译文] TMS570LS1227:如何在_c_int00()中进入无限循环时通知用户?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1035762/tms570ls1227-how-to-notify-user-when-going-into-infinite-loop-in-_c_int00

器件型号:TMS570LS1227

您好! 我正在检查由 HCG 生成的_c_int00函数。 我注意到、MCU 可能会进入无限循环、如下所示:


Fullscreen
1
2
3
4
if(_errata_SSWF021_45_both_plls(PLL_RETRIES) != 0U)
{
handlePLLLockFail();//Infinite wait inside
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


Fullscreen
1
2
3
4
5
6
if ((esmREG->SR1[2]) != 0U)
{
for(;;)
{
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


Fullscreen
1
2
3
4
if( pbistIsTestPassed() != TRUE)
{
pbistFail();//Infinite wait inside
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

当 MCU 进入无限循环时、我需要通知用户、可能通过下拉 nERROR 引脚。 我该怎么做? esmInit()在_c_int00中的所有无限循环之后调用,如果我更改 ESM 配置,它是否起作用? 或者、我能否以编程方式下拉 nERROR 引脚?

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

    您好!

    1.您可以切换板上的一个 LED,也可以在控制台中打印消息。

    2.对于 PLL1滑动、ESM 1.10和 ESM 1.42被置位。 您可以为 ESM 1.10和 ESM 1.42启用 nERROR

    当 ESM 组3的任何位置1时、nERROR LED 将亮起:

       if ((esmREG->SR1[2])!= 0U)       -->组3错误
      {
        for (;;)
        {
        }
      }

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

    感谢您的回复! 问题是,在  生成的代码中,无限循环位于 esmInit()和 main()之前。

    我发现 HCG 中 ESM 配置的更改 导致 了 esmInit()的更改。   由于 esmInit()不会在循环之前被调用,ESM 是否会按配置工作?

    gioInit()对切换 LED 也是如此。 它在 main()中调用,在_c_int00()中的所有循环之后。

    我是否应该在第一个循环之前移动 esmInit()和 gioInit()?

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

    您好!

    是的,可以在_c_int00()中调用 gioInit()。 如果在系统初始化之前切换 GIO 引脚(通过调用 systemInit()),则切换速度相当慢,因为 OSC 用作系统时钟。