我们想使用看门狗定时器作为安全机制。但是,我们似乎似乎无法运行。System_init()fuinction确实开始运行,但是它在几个位置关闭(冻结),例如Periph_init()函数(这直接在寄存器上运行),也在睡眠前的Main_Func()中。但我们似乎无法找到恢复的地方(通过WDG_RESUME()我希望)。我认为这应该发生在唤醒时,但我们找不到它。然而,文档意味着它将在运行。你能告诉我它应该恢复的地方吗?或者我需要在某个地方添加一个wdg_resume()(例如,在Arch_resume_from_sleep()中)?
谢谢,
保罗。
设备:
嗨pvmellor,
默认情况下,在系统唤醒时重新加载并恢复监视程序定时器。当芯片恢复睡眠时,WDOG将被电源关闭,并且将使用默认值重置寄存器。因此,在唤醒时,将执行BLE_WAKEUP_LP_HANDLER(),但不需要调用WDG_RESUME(),因为它会自动恢复。您是否在da1458x_config_basic.h中定义了cfg_wdog宏,以便启用WDOG?另外,是cfg_development_debug宏定义了吗?
谢谢,PM_DIALOG.
它原来是Arch_main.c,main_func(void)中的以下代码
此代码似乎在进入睡眠前冻结WDOG,但之后不会冻结它(如果它已经运行)。所以WDOG休息了。我们简单地评论了这一行。如果调试器停止CPU,则无论如何都会自动停止WDOG,所以我不确定我明白为什么这个代码在第一实例中......?
要回答问题,无论如何:是CFG_WDOG已定义,但未定义CFG_DEVELINMENT_DEBUG。我推测后者不会改变WDOG。
无论如何,用上面的线条评论说,这看起来都是sto工作好 - 谢谢。
保罗。
嗨pvmellor,
如果定义了CFG_Development_debug,则启用调试模式,并在HardFault和NMI(Watcdog)处理程序中的断点中设置代码执行。因此,它允许开发人员到热门连接调试器并获得调试信息。我建议你有这个宏定义。
谢谢,PM_DIALOG.