- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 μCOS与μCOS-II的任务part2
* 1、删除任务具体做法是,把被删除任务的任务控制块从任务控制块链表中删除,并归还给空任务控制块链表,然后在任务就绪表中把该任务的就绪状态位置0,于是该任务就不能再被调度器调用了。 简单地说,就是把他的身份证给吊销了。 * 1、删除任务请求方要用被删除任务的优先级作为参数来调用这个函数。从图中可以看出,删除任务请求方调用这个函数的目的就是要查看被删除的任务控制块是否存在。如果存在,则令被删除任务的任务控制块成员OSTCBDelReq的值为OS_TASK_DEL_REQ,且通知该任务:“已经有任务要求在合适的时候删除自己”,如果不存在,则认为被删除任务已经被删除。 * 1、 OSTCBDelReq作为请求删除方和被删除方的联络信号。 OS_TASK_DEL_REQ = 62 OS_TASK_NOT_EXIST 11 * * * 这时还没有创建用户任务。 * * * 1、执行OSStartHighRdy()使就绪表中最高优先级的任务得以运行。 2、操作系统初始化函数OSInit (void)中调用OS_InitMisc()函数使“OSRunning = FALSE;” * * * * * 系统首先调用初始化函数OSInit()。OSInit()初始化μC/OS-Ⅱ所有的变量和数据结构。 OSInit()建立空闲任务idle task,这个任务总是处于就绪态的。空闲任务OSTaskIdle()的优先级总是设成最低,即OS_LOWEST_PRIO。 如果统计任务允许OS_TASK_STAT_EN和任务建立扩展允许都设为1,则OSInit()还得建立统计任务OSTaskStat()并且让其进入就绪态。OSTaskStat的优先级总是设为OS_LOWEST_PRIO-1。 初始化时主要是创建包括空任务控制块链表在内的5个空数据缓冲区,及按任务优先级存放的任务控制块指针的数组OSTCBPrioTbl[OS_LOWEST_PRIO+1]。 2.2.16 uC/OS-II初始化后的数据结构 2.2.16.1 uC/OS-II初始化后的数据结构 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 图2-16 uC/OS-II初始化后的数据结构 任务就绪表 OSRdyGrp 任务就绪表OSRdyTbl[] ● ● [OS_LOWEST_PRIO-1] [OS_LOWEST_PRIO] OSTCBPrioTbl[] [0] [1] [2] 空任务控制块 空任务控制块 空任务控制块 …… OSTCBStkBottom …… OSTCBStkPtr …… …… OSTCBStkBottom …… OSTCBStkPtr …… 统计任务的控制块 空闲任务的控制块 OSTCBFreeList 任务控制块链表 OSTCBList 统计任务 堆 栈 空闲任务 堆 栈 其余4个链表 2.2.16.2 初始化后的全局变量 变量 值 变量的说明 OSPrioCur 0 类型为INT8U,正在运行的任务的优先级 OSprioHighRdy 0 类型为INT8U,具有最高优先级的就绪任务的优先级 OSTCBCur NULL 类型为OS_TCB*,指向正在运行任务控制块的指针 OSTCBHighRdy NULL 类型为OS_TCB*,指向最高优先级就绪任务控制块的指针 OSTime 0 类型为INT32U,表示系统当前时间(节拍数) OSIntNesting 0 类型为INT32U,存放中断嵌套的层数(0~255) OSLockNesting 0 类型为INT8U,调用了OSSchededLock的嵌套层数 OSCtxSwCtr 0 类型为INT32U,上下文切换的次数 OSTaskCtr 2 类型为INT8U,已经建立的任务数 OSRunning FALSE 类型为BOOLEAN,uC/OS-II核是否正在运行的标志 OSCPUUsage 0 类型为INT8S,存放CPU的利用率的变量 OSIdleCtrMax 0 类型为INT32U,表示每秒空闲任务计数的最大值 OSIdleCtrRun 0 类型为INT32U,表示空闲任务计数器每秒的计数量 OSIdleCtr 0 类型为INT32U,空闲任务的计数器 OSStatRdy FALSE 类型为BOOLEAN,统计任务是否就绪的标志 OSIntExity 0 类型为INT8U,用于函
文档评论(0)