我尝试在Stellaris Launchpad LM4F120上配置看门狗计时器。
代码如下:

void configure_watchdog(void) {
    SYSCTL_RCGCWD_R = 0x1; /* Enabling Clock for WD0 */
    WATCHDOG0_LOAD_R = 0xffffffff; /* Setting initial value */
    WATCHDOG0_CTL_R = WDT_CTL_INTEN; /* Enabling interrupt generation */
}

根据数据表,这应该足够了。
问题是控制器总是降到FaultISR并在之后重置。我不明白为什么。
我做错什么了?
编辑:控制器不重置。它只是转到FaultISR

最佳答案

当看门狗过期时跳到ISR听起来是正确的行为。你到底在你的ISR代码里面做什么?如果您正在重置ISR内的看门狗,那么您不应该看到微控制器重置本身(至少基于您发布的配置代码)。设置看门狗之后,请重新读取配置寄存器,并确保它保留预期的值。该寄存器中的某些位只能在特定情况下设置,并且可能没有使用您认为正在使用的设置运行。
你提到你试图使用看门狗定时器作为一个通用的下计数器。你能用一个通用定时器代替看门狗吗?当时间过期时,您仍然会收到中断,但是常规计时器无法重置整个系统。

关于c - Stellaris Launchpad LM4F120上的看门狗配置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14569224/

10-11 16:35