请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS570LC4357 工具与软件:
您好!
我已阅读文章标题为: TMS570LC4357:WDT 处理-在看门狗复位时
我通过以下方式使用看门狗:
void startWatchDog(void) { /*watch dog*/ dwdInit(WDOG_REG, WDOG_TIMEOUT); //set pre scaler and timer to use dwdCounterEnable(WDOG_REG); //turn on } /************************************************************************************* * Function name : petWatchdog() * Description : reset the watch dog * * @return - nothing ***************************************************************************************/ void petWatchDog(void) { dwdReset(WDOG_REG); //reset watchdog }
在看门狗超时且 MCU 复位后、应用程序不会恢复、即使在从读取引用的帖子中添加了以下位后也不会出现任何情况。
下面是几个问题:
在看门狗超时后的文档中、它讨论了两个选项:发生复位或发生不可屏蔽中断、如何针对非窗口式看门狗配置该选项、或者唯一的复位选择是如何配置该选项?
2.在文档中、特别是"系统异常状态寄存器"中、它表示一个看门狗复位的标志位于第13位、在引用帖子中的示例中、它使用文档中显示位12未被使用的位。
我在您的示例中添加了以下 hl_sys_startup.c
case WATCHDOG_RESET: case WATCHDOG2_RESET: /* USER CODE BEGIN (15) */ _memInit_(); if (_errata_SSWF021_45_both_plls(PLL_RETRIES) != 0U) { /* Put system in a safe state */ handlePLLLockFail(); } _coreEnableEventBusExport_(); systemInit(); _coreEnableIrqVicOffset_(); vimInit(); esmInit(); /* USER CODE END */ break;
为什么不使用条件语句 WATCHDOG_RESET、它在条件语句中的作用是什么?
谢谢