我有一个棘手的错误、在一个较大的项目中无法重现。
复位源为看门狗复位。
我在用户指南(第87页)中看到、我可以将看门狗配置为调用中断、而不仅仅是执行复位。 我想使用此工具来分析堆栈、以便了解问题所在。
我已经为此在初始化例程中插入了行:
SysCtrlRegister.SCSR.AsWord = 0x02;// 条目。 WD_ENINT = 1;//启用看门狗中断
static void InitWatchDog(void) { EALLOW(); // Setup WatchDog // set check bits and set prescale to max, set disable to 0 (enable watchdog), // keep WDFLAG bit as is // Watchdog period is set to Oscillator Cycletime (10MHz, 100nsec) * 512 * 64 * 256 // = 100 nsec * 512 * 64 * 256 = 851.97 msec // 512: osc divide, 64: wd prescaler (max, used here), 256: 8-bit WD counter, 6: PLL multiplier (WD runs at ext. Clk rate) // -> WD decrements every 512*64*6 = 32768*6 = 196608 cycles Watchdog.WDCR.AsWord = (WDCHK_MASK | WDPS_512_64); SysCtrlRegister.SCSR.AsWord = 0x02; // Items.WD_ENINT = 1; // enable Watchdog interrupt EDIS(); }
调试器会为 SYSCTRL 显示值0x07。 这似乎是正确的。
为了测试中断、我 在几秒后调用一个具有无限循环的方法。
但现在什么都不会发生、甚至不会进行重置。
我检查了每个 ISR (也包括 NOTUSED 和 NMI_ISR)、但调用的不是它们。
我想我缺少某个启用功能、但我不知道哪一个
请提供帮助。 谢谢