看门狗定时器未运行

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
Pvmellor.
离线
最后一次露面:1年5个月前
加入:2017-04-27 20:30
看门狗定时器未运行

我们想使用看门狗定时器作为安全机制。但是,我们似乎似乎无法运行。System_init()fuinction确实开始运行,但是它在几个位置关闭(冻结),例如Periph_init()函数(这直接在寄存器上运行),也在睡眠前的Main_Func()中。但我们似乎无法找到恢复的地方(通过WDG_RESUME()我希望)。我认为这应该发生在唤醒时,但我们找不到它。然而,文档意味着它将在运行。你能告诉我它应该恢复的地方吗?或者我需要在某个地方添加一个wdg_resume()(例如,在Arch_resume_from_sleep()中)?

谢谢,

保罗。

设备:
PM_DIALOG.
离线
最后一次露面:2天13小时前
职员
加入:2018-02-08 11:03
嗨pvmellor,

嗨pvmellor,

默认情况下,在系统唤醒时重新加载并恢复监视程序定时器。当芯片恢复睡眠时,WDOG将被电源关闭,并且将使用默认值重置寄存器。因此,在唤醒时,将执行BLE_WAKEUP_LP_HANDLER(),但不需要调用WDG_RESUME(),因为它会自动恢复。您是否在da1458x_config_basic.h中定义了cfg_wdog宏,以便启用WDOG?另外,是cfg_development_debug宏定义了吗?

谢谢,PM_DIALOG.

Pvmellor.
离线
最后一次露面:1年5个月前
加入:2017-04-27 20:30
事实证明是

它原来是Arch_main.c,main_func(void)中的以下代码

//在扩展或深度睡眠模式下,看门狗定时器被禁用//(电源域Pd_sys自动关闭)。虽然,如果Debugger //附加了看门狗定时器,则保持启用,并且必须明确//禁用。if((getword16(sys_stat_reg)&dbg_is_up)== dbg_is_up){wdg_freeze();//停止看门狗定时器}

此代码似乎在进入睡眠前冻结WDOG,但之后不会冻结它(如果它已经运行)。所以WDOG休息了。我们简单地评论了这一行。如果调试器停止CPU,则无论如何都会自动停止WDOG,所以我不确定我明白为什么这个代码在第一实例中......?

要回答问题,无论如何:是CFG_WDOG已定义,但未定义CFG_DEVELINMENT_DEBUG。我推测后者不会改变WDOG。

无论如何,用上面的线条评论说,这看起来都是sto工作好 - 谢谢。

保罗。

PM_DIALOG.
离线
最后一次露面:2天13小时前
职员
加入:2018-02-08 11:03
嗨pvmellor,

嗨pvmellor,

如果定义了CFG_Development_debug,则启用调试模式,并在HardFault和NMI(Watcdog)处理程序中的断点中设置代码执行。因此,它允许开发人员到热门连接调试器并获得调试信息。我建议你有这个宏定义。

谢谢,PM_DIALOG.