fix(DLD154V4B): 修复 WDT_DIV 分频枚举传值 bug — 实际分频 4 导致 410ms 超时不断复位
现场实测 LIMIT=100 (500ms 喂狗) 不断复位重启, 改 50 正常。 根因: wdt_divider_set() 参数是枚举值 (WDT_CLK_DIV_16=0x02), 宏误传 16 (0b10000) -> 3bit 寄存器截断为 0 = WDT_CLK_DIV_4 -> 实际分频 4, 超时 4x4096/40k = 410ms < 500ms 喂狗周期。 修复: WDT_DIV=2 (枚举值) + (wdt_division_type) 显式转换。 隔离测试 mock 升级为 3bit 截断+反推分频, 复现 bug 并断言修复。 vd960Loop 原实现用 WDT_CLK_DIV_64 枚举写法, 无此问题。
This commit is contained in:
@@ -318,7 +318,7 @@ void poll_yellow_led(void)
|
||||
void wdt_init(void)
|
||||
{
|
||||
wdt_register_write_enable(TRUE);
|
||||
wdt_divider_set(WDT_DIV);
|
||||
wdt_divider_set((wdt_division_type)WDT_DIV); // WDT_DIV=2 -> WDT_CLK_DIV_16
|
||||
wdt_reload_value_set(WDT_RLD);
|
||||
wdt_enable();
|
||||
wdt_counter_reload(); // 使能后立即喂一次, 给 FreeRTOS 启动留足时间
|
||||
|
||||
Reference in New Issue
Block a user