• idleTASK,分析。


    static portTASK_FUNCTION( prvIdleTask, pvParameters )

    {

        /* Stop warnings. */

        ( void ) pvParameters;

        /** THIS IS THE RTOS IDLE TASK - WHICH IS CREATED AUTOMATICALLY WHEN THE

        SCHEDULER IS STARTED. **/

        for( ;; )

        {

            /* See if any tasks have deleted themselves - if so then the idle task

            is responsible for freeing the deleted task's TCB and stack. */

    主要作用是清除已被删除的任务的申请的空间。

    //这里删除的任务必须是动态分配的才会被删除。静态的不会被删除

            prvCheckTasksWaitingTermination();

            #if ( ( configUSE_PREEMPTION == 1 ) && ( configIDLE_SHOULD_YIELD == 1 ) )

            {

                /* When using preemption tasks of equal priority will be

                timesliced.  If a task that is sharing the idle priority is ready

                to run then the idle task should yield before the end of the

                timeslice.

                A critical region is not required here as we are just reading from

                the list, and an occasional incorrect value will not matter.  If

                the ready list at the idle priority contains more than one task

                then a task other than the idle task is ready to execute. */

                if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > ( UBaseType_t ) 1 )

                {

                    taskYIELD();空闲任务仅执行一会,从这里进行任务调度。解析一

                }

                else

                {

                    mtCOVERAGE_TEST_MARKER();

                }

            }

    解析一:

    taskYIELD();=portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;    

    宏展开:

    ->( * ( ( volatile uint32_t * ) 0xe000ed04 ) )=(1UL << 28UL )

       在M3编程手册中,0xe000ed04是寄存器

           

       

    触发PENDSV中断。

    }

  • 相关阅读:
    无光照渲染shader-二次元
    EasyRecovery软件最新版安装包V15版本数据恢复软件
    【C++智能指针】智能指针的发展和循环引用的原理和解决
    OWASP Top 10 2022 介紹
    闭眼检测实现
    蓝桥杯 灭鼠先锋 博弈
    开发者福音 | Sui加强Lint和代码不规范提示工具,提高编码速度
    文献学习-4-面向机器人手术的基于数据驱动控制的连续体腹腔镜器械跟踪控制方法
    实现一个简单的长轮询
    k3s 离线部署指南
  • 原文地址:https://blog.csdn.net/m0_54797575/article/details/133431520