请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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、它在条件语句中的作用是什么?
谢谢
