对于 在1毫秒内处理的开关情况、在信号量中断重新加载上下文中、循环写入 WDTLOAD REG-1失败 。 否则 、WDTLOAD 在 没有开关情况调用的情况下在同一个1毫秒信标中断中成功。
然后、看门狗 WDTLOAD 值(333ms) 错误 地超时 超过 开关情况1 UserParameter.Count 、但仅在 精确循环1毫秒周期的信标中断期间。 将 UseParameter.Count 值设置为高于 WDTLOAD 值333ms 、 并且当它应该在 信标1ms 中断中处理的循环1ms 周期(情况1:)内重新加载时、狗超时。
换句话说,这只狗在 这种情况下似乎已经死了,拒绝吃他的食物。
switch (Newcase) { 情况0; { /*在毫秒上下文中处理的各种 C 代码 PWM0 GEN0软件中断*/ /*加载用户毫秒计数值*/ 计数= UserParameter.Count; /*解锁看门狗寄存器以进行写入访问*/ HWREG (WATCHDOG0_BASE + WDT_O_LOCK)= WDT_LOCK_UNLOCK; } 案例1: { /* Wdog0持续1ms 的用户保持计数 x 120k。 *注意:count 应该默认为毫秒、但不是*/ HWREG (WATCHDOG0_BASE + WDT_O_LOAD)=(计数* 120000); /*在毫秒上下文中处理的各种 C 代码 PWM0第1代软件中断*/ /*启用 PWM 选择(启用)引脚多路复用器输出、用于门控 PWM。 * HWREG (PWM0_BASE + PWM_O_ENABLE)||(ulPWMOutBits & 0x3F); 计数--; 如果(计数= 0) { Newcase = 2; 计数= UserParameter.Count; /*锁定观察数其他寄存器以阻止写入访问。 * HWREG (WATCHDOG0_BASE + WDT_O_LOCK)= WDT_LOCK_LOCKED; 中断; } //break;将1ms SW 信标中断加倍至情况1 } }