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

arm任务管理的.ppt

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

嵌入式实时操作系统μC/OS-II ——任务管理;μC/OS-II体系结构 ;;; 可并行执行的独立的基本逻辑单位”称之为“任务”。;;等待状态:任务在等待某一事件的发生还不能运行的状态;;;;2、程序流程图 ;int main (void) { OSInit(); OSTaskCreate(Task0,(void *)0, TaskStk0[TaskStkLengh-1], 4); OSTaskCreate(Task1,(void *)0, TaskStk1[TaskStkLengh-1], 5); OSStart(); return 0; };void Task0 (void *pdata) { pdata = pdata; TargetInit(); while (1) { P0.1 = 0; OSTimeDly(OS_TICKS_PER_SEC / 4); P0.1=1; OSTimeDly(OS_TICKS_PER_SEC / 4); } };void Task1(void *pdata) { pdata = pdata; while (1) { P0.2 = 0; OSTimeDly(OS_TICKS_PER_SEC / 3); P0.2= 1; OSTimeDly(OS_TICKS_PER_SEC / 3); } }; 可重入的代码指的是一段代码可以被多个任务同时调用,而不必担心数据被破坏。即就是说,可重入型函数在任何时候都可以被中断,一段时间以后又可以继续运行,而相应数据却不会丢失。 可重入型函数或者只使用局部变量,即变量保存在CPU寄存器或堆栈中;或者使用全局变量。当使用全局变量时,则要对全局变量予以保护。; 在RTOS中,有可能几个任务需要访问同一个资源。同一个资源往往不能被几个任务同时访问,否则可能会破坏资源。全局变量是最简单的资源,本例用2个全局变量模拟1个共享资源,让低优先级任务依次改变2个全局变量的值,让它们的值始终相等。而高优先级的任务则定时检查这2个变量的值是否相等,如果不相等,则让LED2闪烁。;void Task0(void *pdata) { …… while (1) { if (sum1 != sum2) { if ((i % 2) == 0) { P0.2 = 1; } else { P0.2 = 0; } i++; } …… } };void Task0(void *pdata) { …… while (1) { if (sum1 != sum2) { …… } …… } };OS_ENTER_CRITICAL();void Task0(void *pdata) { …… while (1) { OS_ENTER_CRITICAL(); if (sum1 != sum2) { if ((i % 2) == 0) { P0.2 = 1; } else { P0.2 = 0; } i++; } OS_EXIT_CRITICAL(); …… } };void Task1 (void *pdata) { pdata = pdata; while (1) { OS_ENTER_CRITICAL(); sum1++; sum2++; OS_EXIT_CRITICAL(); } };当处理临界段代码时,须关中断,处理完毕后,再开中断 关中断时间是实时内核最重要的指标

文档评论(0)

ayangjiayu3 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档