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.

[参考译文] TMS570LC4357:HALCoGen 4.06.01中的 SafetyLib 示例:主执行流程中的 while (1)循环

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/619054/tms570lc4357-safetylib-example-in-halcogen-4-06-01-while-1-loop-in-main-execution-flow

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

在示例文件 example_SafetyLib.c 中,主进程流中有以下部分代码:

/*用户代码开始(13)*/
#if STC_ENABLE = 1
{
SL_STC_Config stcSelfTestConfig;

stcSelfTestConfig.stcClockDiv = 2; /* STC 时钟分频器= 1 */
stcSelfTestConfig.intervalCount = 1; /*仅一个间隔*/
stcSelfTestConfig.restartInterval0 =真; /*从间隔0开始*/
stcSelfTestConfig.timeoutCounter = 0xFFFFFFFF; /*超时计数器*/
SL_SelfTest_STC (STC1_COMPARE_SELFCHECK、TRUE、&stcSelfTestConfig);
while (1);/* STC 无法启动*/
}
#endif
/*用户代码结束*/ 

当代码达到此点时、将达到 while (1)并一直旋转、而不会出现这种情况的测试点。

我缺少什么吗?

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

    不应达到 while (1)、因为 STC 被启动。 当 STC 完成时、它将生成一个 CPU 复位并且启动再次开始、但是 STC 第二次被跳过。 如果达到 while (1)、则表示系统/器件中存在应处理的严重错误。 在安全系统中、当达到 while (1)时、它最终将触发看门狗故障。 尽管我对这种编码方法没有什么大的耳戴、但更好的实施可能需要将其作为 while 循环的用户代码段、以便客户可以根据其应用程序自定义行为。 即、进入某种安全状态、通信出错、切换 GPIO 或其系统中适用的任何内容。 这仍然可以通过客户定制来完成、但由于 halcogen 可能会覆盖、因此需要对其进行管理。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、明白了。