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.

[参考译文] CCS/TMS570LS3137:启动后使用 SYSESR

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/856183/ccs-tms570ls3137-using-sysesr-after-startup

器件型号:TMS570LS3137

工具/软件:Code Composer Studio

我需要在我的应用中使用系统异常状态寄存器(SYSESR)的值来帮助诊断虚假系统故障。 例如、了解是由于看门狗计时器超时还是上电复位而发生复位将非常有用。 不幸的是、在 HalCoGen-generated _c_int00 ()中、这个寄存器中能够提供这个信息的位被清除。 例如、

if ((SYS_EXception & powerON_RESET)!= 0U)

/*用户代码开始(12)*/
/*用户代码结束*/

/*清除所有复位状态标志*/
SYS_EXception = 0xFFFFFFU;

/*用户代码开始(13)*/
/*用户代码结束*/
/*用户代码开始(14)*/
/*用户代码结束*/
/*用户代码开始(15)*/
/*用户代码结束*/
/*继续正常启动序列*/

我可以使用适当的用户代码块禁用此代码、但我想知道这样做是否安全。 或者,我是否可以通过其他方法来存储 SYSESR 的启动值以便以后在 main()中使用? 我尝试简单地将其写入全局变量、但当然、这会被后续的内存测试所吹走。

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

    您好!

    应用程序对每个复位条件的响应由应用程序决定。 HALCoGen 仅提供了一种通过 SYSESR 寄存器进行排序的方法、以确定发生了哪些复位条件。 您可以拥有自己的复位处理程序、但不会清除 SYSESR 中的 PORST 位。 然后、您应该能够在每次加电时看到该位的设置。

    您可以禁用 看门狗的异常状态寄存器的清零、也可以读取 main 中的系统异常状态寄存器。 请务必在读取看门狗标志后将其清除、否则在其他复位(加电除外)时仍会设置看门狗标志。