您好!
我想问、触发软件看门狗复位的正确过程是什么。 按照示例 watchdog_ex1_service.c、这些是我 在项目中执行的步骤:
- 在 Device_init()中-禁用了看门狗
- SYSCTL_setWatchdogMode (SYSCTL_WD_MODE_RESET);-设置看门狗以生成复位信号
- SYSCTL_serviceWatchdog();-复位看门狗计数器
- SYSCTL_enableWatchdog();-启用看门狗
- SYSCTL_serviceWatchdog();-在主循环中,复位看门狗计时器
然后、
a) 在我的项目中 、当我调用我的复位代码时:
EALLOW;
WdRegs.WDCR.ALL = 0x0000;
EDIS;
结果是调用了以下函数:
静态空 Interrupt_illegalOperationHandler (空)
{
//
//出现了问题。 CPU 试图执行一个非法的
//指令,生成非法指令陷阱(ITRAP)。
//
ESTOP0;
for (;;)
{
;
}
}
然后:
然后、MCU 在未定义状态下挂起、肯定未正确重置。
b) 在示例 watchdog_ex1_service.c 中、当我 将 SYSCTL_WD_MODE_INTERRUPT 更改为 SYSCTL_WD_MODE_RESET、然后当触发看门狗超时时、结果再次为:
那么、我的问题是、使用看门狗从代码复位器件的正确方法是什么。 我 是否错过了什么?
非常感谢、Marek

