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 可满足不同场景的系统保护需求,增强系统的稳定性和容错能力。