Part Number:CC1310
我在CC1310使用看门狗,看门狗周期设置为8S,看门狗回调里面喂一次狗,然后在main函数里写一个空的while(1),程序会每8s进入一次回调,不会产生复位。如果在回调里不喂狗,他会在第一次8S溢出时进一次看门狗回调 ,然后会一直进看门狗回调,直到第二个8S产生复位。请问这正常吗?
Nick Sun:
您好,
根据CC1310的 CC13x0, CC26x0 SimpleLink Wireless MCU Technical Reference Manual (Rev. I) (英文)其中15.1看门狗介绍的部分,如下图:
其中有说到:WDT 可以配置为在其第一次超时时向控制器生成中断,并在第二次超时生成复位信号。
所以您上述遇到的情况属于正常的。
,
? ?:
那就是说清看门狗的API也会把这个累计两次复位的计数也清除吗?
,
Nick Sun:
您好,
? ? 说:累计两次复位的计数
看门狗定时器计数周期实际上是计数了两次周期。一个周期计数结束进入中断后等于开始重新计数。
清看门狗的API使用的话会清除计数等于从头定时。
,
? ?:
你好,那也就是说,如果我在看门狗回调里调用了清看门狗的API,那就会导致看门狗不起作用了是吧。
,
Nick Sun:
? ? 说:看门狗回调
您这个看门狗回调是指第一次看门狗进入的中断吗?
? ? 说:会导致看门狗不起作用了
不是说不起作用,只是从头计数。
,
? ?:
比如说我程序跑到某个地方卡死了,等超时触发了看门狗溢出,本来看门狗的作用是想防止程序卡死,但是在回调里清了看门狗,导致程序一直卡死无法复位,那不是就是起不到作用了吗。
,
Nick Sun:
您好,
您请稍等,我这边需要花一点时间查看这个问题,有结论联系您。
,
? ?:
你好,请问有结论了吗
,
Nick Sun:
您好,
收到工程师的回复:
为了产生复位,必须启用看门狗配置寄存器的 RESEN 位:
您可以展示您配置看门狗的代码吗?
,
? ?:
,
Nick Sun:
您好,
工程师会查看您的代码,顺便还想询问您,看门狗的SDK示例在您的板子上跑是正常的吗?
,
? ?:
你好,请问芯片休眠期间,看门狗还在计时工作吗?
,
Nick Sun:
您好,
您所指的芯片休眠期间时standby模式下吗?standby模式下没有看门狗。
,
? ?:
好的,谢谢。
如果我是进入了硬件错误或者系统错误的时候,看门狗还有效吗。
,
Nick Sun:
您好,
您所说的进入了硬件错误或者系统错误的时候如果是在standby模式下,看门狗是无效的。只能通过debug等其他方法介入。