看门狗程序如下:
fAPPWDTDevCallbk WDT_Callback()
{
sl_Stop(30);
MAP_PRCMHibernateIntervalSet(330);
MAP_PRCMHibernateWakeupSourceEnable(PRCM_HIB_SLOW_CLK_CTR);
MAP_PRCMHibernateEnter();
return 0;
}
当程序崩溃时运行该函数从bootloader重启,但是我不知道程序崩溃时最后一个操作是 sl_Start();还是sl_Stop();
如果是sl_Stop();
看门狗程序会不会卡在sl_Stop();(貌似曾经被卡过)这个地方。
如果是sl_Start();将会正常重启;
如果要判断最后操作的到底是哪个该怎么写程序不会影响运行,还能正常重启。
Song Fu Sheng:
回复 Yue TANG:
你好,我描述不到位,补充一下,这个函数是看门狗中断回调函数,当看门狗超时触发的时候会运行该函数,触发后我想通过睡眠后的唤醒再次加载程序恢复到正常状态。
1.如果看门狗回调函数里面没有sl_Stop()这句;万一前面最后执行的是sl_Start();就看门狗超时了进入回调函数,那睡眠唤醒之后初始化第一句一定是sl_Start();程序会不会卡住?
2.如果看门狗回调函数里面有sl_Stop()这句;万一前面最后执行的sl_Stop()看门狗就超时了进入回调函数,那回调函数岂不是会卡住?不能正常睡眠和重启?
进入睡眠的时候如果不sl_Stop() wifi核是不是不会reset?
问题的关键就是触发看门狗的是随机事件,触发看门狗之前最后一句到底是sl_Stop()呢还是sl_Start()呢????
程序初始化的时候有若干sl_Start()和sl_Stop()都是满足成对出现的要求;