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.
您好! 我正在检查由 HCG 生成的_c_int00函数。 我注意到、MCU 可能会进入无限循环、如下所示:
if(_errata_SSWF021_45_both_plls(PLL_RETRIES) != 0U) { handlePLLLockFail();//Infinite wait inside }
if ((esmREG->SR1[2]) != 0U) { for(;;) { } }
if( pbistIsTestPassed() != TRUE) { pbistFail();//Infinite wait inside }
当 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 用作系统时钟。