大家好、
我正在尝试在基于 Concerto F28M35x 的项目中使用 WD timer0。
下面是我运行的初始化过程:
空看门狗定时器0初始化(空)
{
//配置看门狗计时器0
//禁用保护
HWREG (SYSCTL_MWRALLOW)= 0xA5A5A5;
//启用此示例使用的外设。
SysCtlPeripheralEnable (SYSCTL_Periph_WDOG0);
//解锁对看门狗配置的写入。
看门狗解锁(WATCHDOG0_BASE);
//设置看门狗计时器的周期。
WatchdogReloadSet (WATCHDOG0_BASE、WD_value_for_15sec_timeout);
//启用从看门狗计时器生成的复位。
#if WD_SYSTM_IN_DEBUG
//将看门狗计时器设置为在调试器停止处理器时停止计数,
WatchdogStallEnable (WATCHDOG0_BASE);
#endif
WatchdogResetEnable (WATCHDOG0_BASE);
//启用看门狗计时器。
WatchdogEnable (WATCHDOG0_BASE);
//锁定对看门狗配置的后续写入。
WatchdogLock (WATCHDOG0_BASE);
//禁用对受保护寄存器的写入。
HWREG (SYSCTL_MWRALLOW)= 0;
}
因此、我希望在超时后获得 wd 中断、并在另一个超时后进行复位。
实际上、我在 WD 计时器到期后获得了 wd 中断、但在该计时器到期后、看起来我会在无限循环中反复获得此中断。
看起来我从未获得复位。
出什么问题了?
注:在 wd ISR 内部,我只做增加中断计数器的操作。
谢谢、
Alex。