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.
工具/软件: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 中的系统异常状态寄存器。 请务必在读取看门狗标志后将其清除、否则在其他复位(加电除外)时仍会设置看门狗标志。