我们想使用看门狗定时器作为安全机制。然而,我们似乎无法让它运行。system_init()函数确实启动了它的运行,但是它在一些地方被关闭(冻结),比如periph_init()函数(它直接在寄存器上操作),也在睡眠前的main_func()中。但我们似乎找不到恢复的地方(我希望是通过wdg\u resume())。我想这应该发生在守灵节,但我们找不到。然而,文档暗示它将运行。你能告诉我应该在哪里恢复吗?或者我需要自己在某处添加一个wdg\u resume()(例如在arch\u resume\u from\u sleep()中)?
谢谢,
保罗。
设备:
嗨,梅勒,
默认情况下,系统唤醒时会重新加载并恢复看门狗计时器。当芯片进入休眠状态时,WDOG将关闭,寄存器将重置为默认值。因此,在唤醒时,将执行BLE\u WAKEUP\u LP\u Handler(),但不需要调用wdg\u resume(),因为它是自动恢复的。是否在da1458x\u config\u basic.h中定义了CFG\u WDOG宏以启用WDOG?另外,是否定义了CFG\u DEVELOPMENT\u DEBUG宏?
谢谢,下午好
原来是arch_main.c中的以下代码,main_func(void)
此代码似乎在进入睡眠前冻结WDOG,但在进入睡眠后(如果WDOG正在运行)不会解除冻结。所以WDOG保持关闭。我们只是把这一行注释掉了。如果调试器停止CPU的WDOG自动停止无论如何,所以我不知道为什么这个代码是在这里的第一个实例。。。?
回答您的问题:定义了yes CFG\u WDOG,但是没有定义no CFG\u DEVELOPMENT\u DEBUG。我认为后者不会改变WDOG。
不管怎样,上面的这句话被注释掉了,看起来一切正常-谢谢。
保罗。
嗨,梅勒,
如果定义了CFG\u DEVELOPMENT\u DEBUG,则启用调试模式,并在Hardfault和NMI(Watcdog)handlers的断点中设置代码执行。因此,它允许开发人员热连接调试器并获取调试信息。我建议您定义这个宏。
谢谢,下午好