- 1、本文档共39页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式第六章 任务管理 第七章 时间管理
第六章 任务管理 μC/OS-II中的任务 任务看起来与任何C函数一样,具有一个返回类型和一个参数,只是它从不返回。 任务的返回类型必须被定义成void型。 任务可以是一个无限的循环,也可以是在一次执行完毕后被删除掉。 任务代码并不是被真正的删除了,而只是μC/OS-Ⅱ不再理会该任务代码,所以该任务代码不会再运行 哪个参数是任务的标识符? μC/OS-II最多能够管理多少任务?用户可以使用多少个任务?用户如何使用优先级? 设计任务 例如:采集三个通道的数据,经过A/D转换后使用图形显示。 任务设计方式1: 三通道的数据采集和A/D转换 绘图任务 编程任务有重复,无法通过优先级选择通道 任务设计方式2: 单通道的数据的采集和A/D转换(通道号和数据变量作为参数),在程序中使用不同参数调用三次 绘图任务 编程任务简单,能够定义不同通道的优先级,任务调度需要一定时间 任务管理的内容 6.1/6.2 建立任务 6.3 任务堆栈 6.4 堆栈检验 6.5 删除任务 6.6 请求删除任务 6.7 改变任务的优先级 6.8 挂起任务 6.9 恢复任务 6.10 获得有关任务的信息 建立任务 通过调用函数OSTaskCreate()或者OSTaskCreateExt()建立任务。 OSTaskCreateExt()是OSTaskCreate()的扩展版本,使用更多的参数提供附加功能。 任务可以在多任务开始调度前建立,也可以在其他任务执行过程中建立。 在开始多任务调度前,至少要建立一个任务。 任务不能通过中断服务程序(ISR)建立 6.1 OSTaskCreate() INT8U OSTaskCreate (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio ) void (*task)(void *pd)//传递任务的地址 任务的地址是任务函数的函数名 void *pdata//任务中用户参数的指针 OS_STK *ptos//堆栈的栈顶 必须设置OS_CPU.H中的OS_STACK_GROWTH通知系统堆栈的类型。 typedef unsigned int OS_STK; INT8U prio//任务的优先级 typedef unsigned char INT8U ; 6.1 OSTaskCreate() OSTaskCreate (Display_Task, (void *)0, (OS_STK*)Display_Task_Stack[STACKSIZE-1], Display_Task_Prio);// 20 // 堆栈是一个数组,长度由STACKSIZE决定 优先级定义为20 6.1 OSTaskCreate() 函数的功能 校验优先级 初始化任务的堆栈 初始化任务控制块 其他初始化功能 6.1 OSTaskCreate() 校验优先级1 判断优先级是否有效 if (prio OS_LOWEST_PRIO) { return (OS_PRIO_INVALID); } 如果任务的优先级大于定义的最低优先级,返回错误信息:优先级无效! prio OS_LOWEST_PRIO63 校验优先级2 判断此优先级任务是否存在 OS_ENTER_CRITICAL(); if (OSTCBPrioTbl[prio] == (OS_TCB *)0) { OSTCBPrioTbl[prio] = (OS_TCB *)1; OS_EXIT_CRITICAL(); /* 其他功能 */ } else { OS_EXIT_CRITICAL(); return (OS_PRIO_EXIST); } 6.1 OSTaskCreate() 初始化任务的堆栈 OS_STK_GROWTH 定义为1;堆栈地址由高向低递减 OS_STK * OSTaskStkInit (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT16U opt) psp = (void *)OSTaskStkInit(task, pdata, ptos, 0); psp;//返回栈顶指针 初始化任务的寄存器初值 SP为ptos,设置其他寄存器值时SP递减 PC/LR为函数地址 R1-R12为任意设定的初始值 R0用来保存用户信息pdata CPSR/SPSR设置为管理模式 6.1 OSTaskCreate() 初始化任务控制块 INT8U OS_TCBInit ( INT8U prio, OS_STK *ptos, OS_STK *pbos, INT16U id,
您可能关注的文档
- 山东建筑大学热工检测课第6章.ppt
- 山东省东营市2013年中考物理试题(word版,含解析).doc
- 山东省2014年高考一轮专题复习资料立体几何理.doc
- 山东省临沂市沂水县2016届九年级(上)期中物理试卷(解析版).doc
- 山东省数学(人教A)必修四《1.6-1三角函数模型的简单应用》课件.ppt
- 山东省枣庄三十九中2016届中考数学一模试题(含解析).doc
- 山东省日照秦楼中心初级中学九年级数学 24.2.2直线与圆的位置关系课件 北师大版.ppt
- 山东省淄博市沂源县2015-2016学年八年级(下)期末化学试卷(五四学制)(解析版).doc
- 山东省济南市实验中学2014-2015七年级数学上册同步课件:2-2 整式的加减复习课.ppt
- 展示设计(全套课件) 第十二章 展馆控制要素—色彩和照明.pptx
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
文档评论(0)