海思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任务得以运行,从而喂狗。

原文地址:https://www.cnblogs.com/429512065qhq/p/9210176.html