This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我有一个棘手的错误、在一个较大的项目中无法重现。
复位源为看门狗复位。
我在用户指南(第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)、但调用的不是它们。
我想我缺少某个启用功能、但我不知道哪一个
请提供帮助。 谢谢
您好!
看门狗 ISR 设置似乎有问题。
是否 在中断控制器中启用了想要由看门狗中断触发的中断。 如果您的示例中有任何其他中断正常工作、请检查配置是否正确完成
谢谢!
我还设置了相应的定义、
[DSP2803x_SWPrioritizeIsrLevels.h]
#define INT1PL 1 //组1中断(PIEIER1)
[...]
#define G18PL 1//5 // WAKEINT (WD/LPM)
并且还定义中断
中断失效 WAKEINT_ISR (void)// WD/LPM
{
[...]
}
但是我忽略了在 main 的设置方法中启用中断。。。 (昨天不是我最好的一天)
感谢您快速回答
(闭路)