5.3任务控制块OS_TCB
OS_TCB保存任务信息,使用OSTaskCreat();创建任务时,会给任务分配一个任务控制块
创建一个结构体 struct os_tcb{};
5.4任务堆栈:用来在任务切换和调用函数时保存现场,每个任务都有一个堆栈。下面讲创建一个堆栈
1.CPU_STK数据类型定义任务堆栈,CPU_STK实际是一个CPU_INT32Ul类型(cpu.h),一个CPU_STK类型为4个字节
CPU_STK TASK_STK[64] //定义一个任务堆栈(256字节)
按例程方法定义堆栈:
#define TASK_STK_SIZE 64 //任务堆栈大小
CPU_STK TASK_STK[TASK_STK_SIZE ]
5.5 任务就绪表
UCOSIII 中将已经就绪的任务放到任务就绪表里,任务就绪表有两部分:优先级位映射表
OSPrioTbl[]和就绪任务列表 OSRdyList[]。
5.5.1 优先级 位 映射表
当某一个任务就绪以后就会将优先级位映射表中相应的位置 1:
有关于优先级的操作有3个函数:OS_PrioGetHighest()、OS_PrioInsert()和OS_PrioRemove()。
分别为获取就绪表中最高优先级任务、将某个任务在就绪表中相对应的位置 1 和将某个任务在
就绪表中相对应的位清零,