参考例程,在看门狗定时器时间的配置上,我看到如下函数:
/* Step 3- Write match value */
#if(WDT_DEMO == WDT_INTERRUPT_DEMO)
Cy_WDT_SetMatch(WDT_MATCH_COUNT);
#else
Cy_WDT_SetMatch(0);
#endif
我想问的是如果我想自己配置看门狗复位的时间,在哪里配置。
2.另外:
如果我在我的app1里面加入了看门狗, 我的app0没有喂狗操作。 当我的程序有app1跳转到app0后,是否会因为不喂狗而导致复位。 另外我的app1如果引起了看门狗复位,那么是复位到app0的入口开始执行还是复位到app1的入口开始执行。
已解决! 转到解答。
对于你目前使用的Free runninf WDT来说是最长的复位时间了,若需要把这个时间延长的话,需要使用Muti-counter WDT, 通过两个counter级联,counter1时钟源为counter所产生的中断,这样以counter0 match的时间为单位,可以配置任意长的时间。
MCWDT counters级联code example可以参考 - https://www.cypress.com/documentation/code-examples/ce220061-psoc-6-mcu-multi-counter-watchdog-inter...
关于app1跳转到app0后看门狗复位的情况,我又核实了下,应该是会停止运行的,如你所说,只有跳转到app1后初始化后才会重新运行。
WDT复位的时间可以通过设置ignore bits 缩短, 但是没有办法延长 -
/* Step 2- Write the ignore bits - operate with full 16 bits */
Cy_WDT_SetIgnoreBits(0);
你说的WDT复位的情况是可能会发生的,如果app1引起了复位,会复位到app0的入口开始执行。
/* Step 2- Write the ignore bits - operate with full 16 bits */
Cy_WDT_SetIgnoreBits(0);
配置为0,已经是最长的值了? 我实际测试发现看门狗复位时间大概2~3秒。 那是不是看门狗复位的最长间隔也就是这么长了。
另外我还想确认一下,我的app1增加了看门狗复位的程序。如果我控制app1程序跳转到app0执行, 那我的app0也要增加喂狗的程序。 不然我的app0会经常性的发生复位?
Cy_Bootload_ExecuteApp(0); 这个函数无法禁止看门狗程序停止?
我之前用的stm32做iap的时候,stm32的app1软件复位以后,会直接跳转到app0入口执行,并且类似于上电复位。看门狗会停止。 只有跳转到app1,初始化了看门狗后才会执行。 我想知道cy的是否也是这么做的? 或者如果不是这么做的,那我在程序执行过程中能否通过函数禁止看门狗程序继续执行? 谢谢!!
对于你目前使用的Free runninf WDT来说是最长的复位时间了,若需要把这个时间延长的话,需要使用Muti-counter WDT, 通过两个counter级联,counter1时钟源为counter所产生的中断,这样以counter0 match的时间为单位,可以配置任意长的时间。
MCWDT counters级联code example可以参考 - https://www.cypress.com/documentation/code-examples/ce220061-psoc-6-mcu-multi-counter-watchdog-inter...
关于app1跳转到app0后看门狗复位的情况,我又核实了下,应该是会停止运行的,如你所说,只有跳转到app1后初始化后才会重新运行。