22.3. 应用示例

WDT 可以配置成复位模式或者中断模式复位模式在第一次超时的时候,就会发出复位脉冲;中断模式会在第一次超时情况下,发出中断请求,如果没有处理,第二次超时情况下,则会发出复位脉冲。

22.3.1. 复位模式

当 WDT 配置成复位模式后,如果在规定的时间内不进行喂狗,将会触发复位,参考代码:

int wdt_example(void)
{
    // 参数一小于参数二使用的就是复位模式,5000ms(可能需要更久)之后就会触发复位
    gx_watchdog_init(0, 5000, watchdog_irq_handler, NULL);

    /* 喂狗 */
    gx_hal_watchdog_ping(&wdt_dev);
}

备注

WDT 使能后,将无法关闭,除非通过时钟复位。

22.3.2. 中断模式

当 WDT 配置成中断模式,第一次超时情况下,会发出中断请求,如果没有进行喂狗,在第二次超时的情况下,将会触发复位,参考代码:


int watchdog_irq_handler(int irq, void *pdata)
{
	printf("watchdog level interrupt!\n");
	gx_watchdog_ping();

	return 0;
}

int wdt_example(void)
{
    // 参数一大于参数二使用的就是中断模式,5000ms(可能需要更久)之后就会触发中断
    gx_watchdog_init(10000, 5000, watchdog_irq_handler, NULL);
}

通过灵活选择复位模式中断模式,WDT 可满足不同场景的系统保护需求,增强系统的稳定性和容错能力。