FreeRTOS—TCB_t结构体及重要变量说明

1.TCB_T

TCB_t的全称为Task Control Block,也就是任务控制块。

typedef struct tskTaskControlBlock             
{
        //栈顶指针,中断或任务切换时,会对任务压栈
        volatile StackType_t    *pxTopOfStack;    

        // 启用MPU的情况下设置
        #if ( portUSING_MPU_WRAPPERS == 1 )
            /* 设置任务访问的内存权限 */
            xMPU_SETTINGS    xMPUSettings;        
        #endif

        // 表示任务状态,不同的状态会挂接在不同的状态链表下
        ListItem_t            xStateListItem;    
        // 事件链表项,会挂接到不同事件链表下
        ListItem_t            xEventListItem;        
        // 任务优先级,数值越大优先级越高
        UBaseType_t            uxPriority;            
        // 指向堆栈起始位置,这只是单纯的一个分配空间的地址,可以用来检测堆栈是否溢出
        StackType_t            *pxStack;            
        // 任务名
        char                pcTaskName[ configMAX_TASK_NAME_LEN ];

        /* 对于向上生长的栈,用于指明栈的上边界,用于判断是否溢出 */
        #if ( ( portSTACK_GROWTH > 0 ) || ( configRECORD_STACK_HIGH_ADDRESS == 1 ) )
            StackType_t        *pxEndOfStack;        
        #endif

        // 记录临界段的嵌套层数
        #if ( portCRITICAL_NESTING_IN_TCB == 1 )
            UBaseType_t        uxCriticalNesting;    
        #endif

        // 跟踪调试用的变量
        #if ( configUSE_TRACE_FACILITY == 1 )
             /* 用于调试,表示本任务是第几个创建,每创建一个任务,系统有一个全局变量加1*/
            UBaseType_t        uxTCBNumber; 
            /* 调试用,用户通过API函数vTaskSetTaskNumber()来设置,数值由函数参数指定 */
            UBaseType_t        uxTaskNumber;        
        #endif

        /* 如果使用任务互斥量信号 */
        #if ( configUSE_MUTEXES == 1 )
           /* 优先级提升前,保存原优先级,优先级反转时用*/
            UBaseType_t        uxBasePriority;   
           /* 任务获取的互斥信号量个数,为0*/
            UBaseType_t        uxMutexesHeld;
        #endif

        // 任务的一个标签值,可以由用户自定义它的意义,例如可以传入一个函数指针可以用来做Hook    函数调用
        #if ( configUSE_APPLICATION_TASK_TAG == 1 )
            TaskHookFunction_t pxTaskTag;
        #endif

        // 任务的线程本地存储指针,可以理解为这个任务私有的存储空间
        #if( configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0 )
            void            *pvThreadLocalStoragePointers[     configNUM_THREAD_LOCAL_STORAGE_POINTERS ];
 
  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值