# WDT 看门狗使用教程

## 什么是 WDT？

**WDT（Watchdog Timer）看门狗定时器**
是一个用于系统稳定性的防御机制，确保当程序出现异常（如死循环、卡死）时，系统能自动重启恢复运行。

典型用途包括：

- 防止嵌入式设备长时间卡死
- 在关键任务中确保程序定时响应
- 系统自恢复机制的核心组件

## K230 WDT 特性

| 特性     | 描述                          |
| ------ | --------------------------- |
| 支持通道   | 内置 **2 路 WDT**（WDT0 / WDT1） |
| 最小超时时间 | 精度为秒级，超时时间通常为 1 秒及以上        |
| 重启机制   | 超时后自动触发 **系统复位**            |
| 手动喂狗   | 调用 `feed()` 方法，在超时时间前重置计时器  |

## 应用示例：基础看门狗测试

以下示例通过 WDT1 设置 3 秒的超时时间，并在程序中模拟“喂狗”操作，以防止系统重启。

### 示例代码

```python
import time
from machine import WDT

# ========== 初始化 WDT1 ==========
wdt1 = WDT(1, 3)  # 通道 1，超时时间 3 秒

# ========== 等待 2 秒 ==========
time.sleep(2)

# ========== 喂狗操作 ==========
wdt1.feed()       # 重置看门狗计数器，避免触发系统复位

# ========== 再次等待 2 秒 ==========
time.sleep(2)

# 若不再调用 feed()，超过 3 秒后系统将自动重启
```

## 接口说明

| 方法名                     | 说明                     |
| ----------------------- | ---------------------- |
| `WDT(channel, timeout)` | 创建看门狗对象，参数为通道号与超时时间（秒） |
| `feed()`                | 喂狗操作，重置倒计时计数器          |

## 使用建议

| 场景        | 推荐操作                 |
| --------- | -------------------- |
| 系统任务死锁防护  | 每次主循环内调用 `feed()` 喂狗 |
| 串口/网络卡死检测 | 在成功接收数据后再喂狗          |
| 多线程应用     | 可用消息队列通知主线程定时喂狗      |

## 常见问题与排查

| 问题            | 原因及解决办法                 |
| ------------- | ----------------------- |
| 程序运行一段时间后自动重启 | 看门狗未喂狗，已触发超时复位          |
| 喂狗后仍然重启       | 喂狗频率低于超时时间，或调用位置不在主循环中  |
| 想关闭看门狗        | K230 当前无关闭接口，建议适配逻辑层面规避 |

## 延伸阅读

- [K230 WDT API 文档](../../api/machine/K230_CanMV_WDT模块API手册.md)
