美文网首页
9.空闲线程钩子函数喂狗2021-11-03

9.空闲线程钩子函数喂狗2021-11-03

作者: 宜居远控 | 来源:发表于2022-10-31 09:34 被阅读0次

    空闲线程是一个线程状态永远为就绪态的线程,所以空闲线程钩子函数不许被挂起,如使用 rt_thread_delay(),rt_sem_take()等可能会导致线程挂起阻塞类函数,在钩子函数中使用 空闲线程可以设置多个钩子函数

    在空闲线程钩子函数里不能调用系统提供的使线程挂起的函数   如: rt_thread_mdelay(300);


    在idel的钩子函数中是不能用while (1) 之类的死循环的,这样会造成系统资源不能得到释放。

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    void rt_hw_iwdg(void)      ///在空闲线程钩子函数里喂狗

    {

      IWDG_ReloadCounter();    /*reload*/   

    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    void IWDG_Init(void)    //看门狗周期设置为1秒

    {

      /* Set counter reload value to obtain 250ms IWDG TMReOut.

        Counter Reload Value = 1000ms/IWDG counter clock period

                              = 1000ms / (64/LSI)

                              = 1s / (64/LsiFreq)

                              = LsiFreq/(64 * 1)

                              = LsiFreq/64

      */

      IWDG_KeyRegWrite(IWDG_KeyRegWrite_Enable);

      IWDG_SetPrescaler(IWDG_Psc_64);

      IWDG_SetReload(LsiFreq / 64);

      IWDG_ReloadCounter();

      IWDG_Enable();

      rt_thread_idle_sethook(rt_hw_iwdg); /* 设置调度器钩子 */

    }

    相关文章

      网友评论

          本文标题:9.空闲线程钩子函数喂狗2021-11-03

          本文链接:https://www.haomeiwen.com/subject/sbrczltx.html