clone 了最新的rt thread 源码,使用了watchdog的例子(https://github.com/RT-Thread-packages/peripheral-sample/blob/master/iwdg_sample.c),发现例子好像是老的,设备名是iwg,驱动里面注册的是wdt。更改了之后,输入命令后,毫无反应,也无打印信息。
楼主用的是STM32的话需要修改2个地方:
1,设备名“iwg”修改为”wdt”
2,超时时间单位是秒,而不是毫秒,所以超时时间是0-31之间就可以了。
这样修改后就可以用了。你遇到的问题我已经反馈过了,应该近期就有人修改了。
我不知道你哪里不懂。这个驱动我是测试过后给官方反应过的。
你有问题就贴出你试验不成功的现象。 …
大神:驱动里面我按照例子单步进去,发现设置timeout的时候,发现wdt没有启动,就是is_start是0 ,然后我在例子里面添加了对wdt的启动,然后发现有报错,原来是驱动里面启动部分好像少了一个break; 然后我发现我设置了10秒,系统10秒就重启了,看来那个idle_hook 可能没有作用。
case RT_DEVICE_CTRL_WDT_START:
if (HAL_IWDG_Init(&stm32_wdt.hiwdg) != HAL_OK)
{
LOG_E(“wdt start failed.”);
return -RT_ERROR;
}
stm32_wdt.is_start = 1;
[i=s] 本帖最后由 whj467467222 于 2019-7-22 09:24 编辑 [/i]
大神:驱动里面我按照例子单步进去,发现设置timeout的时候,发现wdt没有启动,就是is_start是0 ,然后我 …
你这个情况可能是没有进入到空闲任务,看下你其他任务有没有while(1)。另外最新有个PR再修改你发现的BUG。https://github.com/RT-Thread/rt-thread/pull/2884
大神:驱动里面我按照例子单步进去,发现设置timeout的时候,发现wdt没有启动,就是is_start是0 ,然后我 …
https://github.com/RT-Thread/rt-thread/pull/2884/files
谢谢反馈,已经在提 PR ,修复这个问题了。:L