海思NB-IOT的SDK看门狗的使用
1. 看门狗需要喂狗,如果自己写的任务一直运行,那么空闲任务无法运行会导致看门狗复位,来看下看门狗的机制,首先系统启动的时候创建了空闲任务
在这个函数里面void vTaskStartScheduler( void )创建了下面的空闲任务
xReturn = xTaskCreate( prvIdleTask,
"IDLE", configMINIMAL_STACK_SIZE,
( void * ) NULL,
( tskIDLE_PRIORITY | portPRIVILEGE_BIT ),
&xIdleTaskHandle );
2. 看下空闲任务具体执行了什么,回调钩子函数
#if ( configUSE_IDLE_HOOK == 1 )
{
extern void vApplicationIdleHook( void );
vApplicationIdleHook();
}
#endif /* configUSE_IDLE_HOOK */
3. 继续往下
void vApplicationIdleHook(void)
{
watchdog_kick();
}
继续
void watchdog_kick(void)
{
if (!watchdog_inited)
{
return;
}
hal_watchdog_kick();
}
4. 综上看来,必须所有的任务都进入睡眠之后才有机会喂狗,所以写的任务还是要保持一点空闲时间,让idle任务得以运行,从而喂狗。