嗨对话框
我使用ftreertos_rtt来测试看门狗函数,但看门狗超时时似乎没有重置。我定义了DG_CONFIGUSE_WDOG AS 1并注册了一个看门狗,但没有任何sys_watchdog_notify(wdog_id);以下是我的测试代码
// -----------测试代码-------------- //
静止void prvtemplateTask(空白* pvParameters)
{
os_tick_time xnextwaketime;
静态UINT32_T test_counter = 0;
Int8_t wdog_id;
xnextwaketime = os_get_tick_count();
wdog_id = sys_watchdog_register(false);//只有在没有任何看门狗的情况下注册看门狗
为了( ;; )
{
....................跳到粘贴
}
// ----------------------------------------------------------------------------
当电源重置时,我添加了GPIO高/低信号,但我只有一次没有任何由Whatchdog超时重置引起的任何重复信号的时间。
我该怎么办才能重置看门狗(如重置电源)?
此外,我想将最大看门狗超时扩展到2.6s到5秒,是否有可能这样做?
感谢您的帮助
设备:
嗨nigelyang,
默认情况下,代码将在开发模式下(1))中的堆栈获取堆栈。因此,当看门狗到期时,您应该在您自己的默认的NMI处理程序旁路。请查看以下代码片段。
#include“sys_watchdog.h”
#include“hw_watchdog.h”
void watcdog_cb(无符号long *异常_args)
{
printf(“退出看门狗\ n \ r”);
}
静止void prvtemplateTask(空白* pvParameters)
{
Int8_t wdog_id __attribute __((未使用));
sys_watchdog_init();
wdog_id = sys_watchdog_register(false);
/ *用自己的绕过默认的NMI处理程序!* /
hw_watchdog_register_int(watcdog_cb);
printf(“输入看门狗\ n \ r”);
为了 (;;) {
}
}
谢谢,PM_DIALOG.
嗨对话框
我读取了DSP项目代码的System_Init()中的下面的设置。我不明白“闲置任务看狗”的目的是什么?
如果我在不使用“空闲任务观看狗”的情况下启用看门狗,系统似乎不起作用。感谢您的回答
#if dg_configuse_wdog.
//首先注册空闲任务。
idle_task_wdog_id = sys_watchdog_register(false);
assert_warning(idle_task_wdog_id!= -1);
sys_watchdog_configure_idle_id(idle_task_wdog_id);
#万一
嗨nigelyang,
如果您不使用空闲任务Wdog,则应在VAPplicationIdLehook()函数中注释出sys_watchdog_notify(idle_task_wdog_id)。否则,idle_task_wdog_id将是未定义的,将从未知值通知Wdog,并且将击中硬盘丢失。我们使用它,以便从空闲任务中通知WDOG。
谢谢,PM_DIALOG.
你好
如果您在看门狗代码中看到更深,还有两件事阻止它发生
- JTAG探测器用法
- #define dg_configimage_setup development_mode vs production_mode
两个调试都在看门狗的NMI处理程序中管理,它们通过断点替换重置,因此可以使用调试工具来分析看门狗的原因(使用硬件异常方法)。