网站大量收购独家精品文档,联系QQ:2885784924

(PPT)-入式系统及应用.ppt

  1. 1、本文档共152页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(PPT)-入式系统及应用

嵌入式系统及应用;主要内容;第一节 任 务 ;在嵌入式实时系统中任务是操作系统内核调度的基本单位。 任务主要包含以下内容: 代码:一段可执行的程序 数据:程序所需要的相关数据(变量、工作空间、缓冲区等) 堆栈 程序执行的上下文环境 ; void YourTask (void *pdata) { for (;;){ /* 用户代码; 调用uC/OS-II的某些功能函数*/: OSFlagPend(); OSMboxPend(); OSMutexPend(); OSQPend(); OSSemPend(); OSTaskDel(OS_PRIO_SELF); OSTaskSuspend(OS_PRIO_SELF); OSTimeDly(); OSTimeDlyHMSM(); /* 用户代码 */ } } ; void YourTask (void *pdata) { /* 用户代码; OSTaskDel(OS_PRIO_SELF); } ;int main(void) { // 初始化 uCOS内核. OSInit(); // 在开始多任务之前必须先建立一个任务 OSTaskCreate(TestTask1, (void *) 11, TestTaskStk1[TASK_STK_SIZE], 11); //第1个参数是指向该任务运行代码的指针,第2个参数是一个指向任务初始化数据的指针, //第3个参数是任务的堆栈起始地址(高地址向低地址增长), //第4个参数是任务的优先级,数值越小,优先级越高。 // 开始多任务,控制权交给内核 OSStart(); } void TestTask1(void *pdata) { printf(%4u: ***** Test Task 1 First call *****\n, OSTime); //创建其他任务 OSTaskCreate(TestTask2, (void *) 22, TestTaskStk2[TASK_STK_SIZE], 22); while (1) { printf(%4u: ***** Test Task 11 *****\n, OSTime); OSTimeDly(1); } };void TestTask2(void *pdata) { while (1) { printf(%4u: ***** Test Task 22 *****\n, OSTime); OSTimeDly(1); } } 注: 堆栈大小有上限,对于X86处理器,OS_STK变量类型是16位变量,所以堆栈大小是1024B; 2. 内核允许建立多达63个用户任务,必须给这些任务分配一个独一无二的介于0-62的优先级。0是最高优先级。 3. OSStart()函数并不返回main函数。;任务的主要特性;任务与程序的区别: 任务能真???地体现工作内容的并发性,而程序不能; 程序是任务的组成部分 除程序外,任务还包括数据、堆栈及其上下文环境等内容; 程序是静态的,任务是动态的; 任务有生命周期,有诞生、有消亡,是短暂的;而程序是相对长久的; 一个程序可对应多个任务,反之亦然; 任务具有创建其他任务的功能,而程序没有。 ; 采用多任务的好处: 任务的规模较小 每个任务更容易编码和调试,其质量也更容易得到保证 不少应用本身就是由多个任务构成的 如一个应用可能需要进行以下任务的处理:计算、从网络获取数据和刷新显示屏幕 采用多任务的处理方式是应用问题的一个非常自然的解决方式 任务之间具有较高的独立性,耦合性小 通过增加新的任务就能方便的扩充系统功能 实时性强 保证紧急

文档评论(0)

189****1013 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档