- 14
- 0
- 约4.16千字
- 约 3页
- 2017-03-05 发布于重庆
- 举报
OS_TCBInit函数
/任务控制块初始化??
//描述:这个函数是uCOS-II内部函数,在建立任务时调用的初始化任务控制块OS_TCB函数,含7个参数,查看OSTaskCreate()和OSTaskCreateExt()??
//初始化任务控制块TCB(优先级指针,堆栈指针,栈底指针,任务标志符,堆栈容量,扩展指针,选择项)??
INT8U??OS_TCBInit?(INT8U?prio,?OS_STK?*ptos,?OS_STK?*pbos,?INT16U?id,?INT32U?stk_size,?void?*pext,?INT16U?opt)??
{??
#if?OS_CRITICAL_METHOD?==?3????????????????????????????????//中断函数被设定为模式3??
????OS_CPU_SR??cpu_sr;??
#endif??????
????OS_TCB????*ptcb;??????????????????????????????????????//定义一个PCB变量??
??
??
????OS_ENTER_CRITICAL();??????????????????????????????????//关闭中断??
????ptcb?=?OSTCBFreeList;?????????????????????????????????//分配一个空任务控制块给ptcb??
????if?(ptcb?!=?(OS_TCB?*)0)?{????????????????????????????//如果缓冲池有空余TCB,这个TCB被初始化??
????????OSTCBFreeList????????=?ptcb-OSTCBNext;???????????//指向TCB的双向链接的后链接??
????????OS_EXIT_CRITICAL();???????????????????????????????//打开中断??
????????ptcb-OSTCBStkPtr????=?ptos;???????????????????????//指向当前TCB的栈顶指针(输入的数据)??
????????ptcb-OSTCBPrio??????=?(INT8U)prio;????????????????//保存当前TCB的优先级别(输入的数据)??
????????ptcb-OSTCBStat??????=?OS_STAT_RDY;????????????????//设定当前TCB的状态字(内容为(准备完毕))??
????????ptcb-OSTCBDly???????=?0;??????????????????????????//允许任务等待的最大字节节拍为0??
??
#if?OS_TASK_CREATE_EXT_EN??0???????????????????????????????//允许生成OSTaskCreateExt()函数??
????????ptcb-OSTCBExtPtr????=?pext;???????????????????????//指向用户定义的任务控制块(扩展指针)??
????????ptcb-OSTCBStkSize???=?stk_size;???????????????????//设定堆栈的容量??
????????ptcb-OSTCBStkBottom?=?pbos;???????????????????????//指向堆栈栈底的指针??
????????ptcb-OSTCBOpt???????=?opt;????????????????????????//保存OS_TCB的选择项??
????????ptcb-OSTCBId????????=?id;?????????????????????????//保存任务标志符??
#else???//否则使用旧的参数??
????????pext?????????????????=?pext;???????????????????????//扩展指针??
????????stk_size?????????????=?stk_size;???????????????????//堆栈的容量??
????????pbos?????????????????=?pbos;???????????????????????//栈底的指针??
????????opt??????????????????=?opt;????????????????????????//选择项??
????????id???????????????????=?id;?????????????????????????//任务标志符??
#endif??
??
#if?
原创力文档

文档评论(0)