版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实时操作系统实验报告专业:J通信0601学号:3061109015姓名:蔡智超指导老师:李峰实验二任务管理实验实验目的: 1.理解任务管理的基本原理,了解任务的各个基本状态及其变迁过程;2.掌握μC/OS-II中任务管理的基本方法(挂起、解挂);3.熟练使用μC/OS-II任务管理的基本系统调用。实验要求与思路:为了体现任务的各个基本状态及其变迁过程,本实验设计了T0、T1和T3三个任务,它们交替运行,如图所示说明:在系统完成初始化后,可以先创建并启动优先级最低的TaskStart,由它创建其他3个应用任务T0、T1和T2,之后整个系统的运行流程如下:1)优先级最高的T0开始执行,之后T0挂起自己;2)然后系统调度选中T1开始执行,之后T1挂起自己;3)接着系统调度选中T2,之后唤醒T0;4)如此循环实验程序:**********************************************************************************************************uC/OS-II*TheReal-TimeKernel*EX#1TaskManagement*********************************************************************************************************#include"includes.h"**********************************************************************************************************CONSTANTS*********************************************************************************************************#defineTASK_STK_SIZE512/*Sizeofeachtask'sstacks(#ofWORDs)*/#defineN_TASKS2/*Numberofidenticaltasks*VARIABLES**********************************************************************************************************/OS_STKTaskStk[N_TASKS][TASK_STK_SIZE];/*TasksstacksOS_STKTaskStartStk[TASK_STK_SIZE];/*TaskStarttaskstackINT8UTaskData[N_TASKS];/*Parameterstopasstoeachtask/**FUNCTIONPROTOTYPES**********************************************************************************************************/voidTask0(void*pdata);/*Functionprototypesoftasks*/voidTask1(void*pdata);voidTask2(void*pdata);voidTaskStart(void*pdata);/*FunctionprototypesofStartuptask*/staticvoidTaskStartCreateTasks(void);/*Functionprototypesofcreattask*/staticvoidTaskStartDispInit(void);/*FunctionprototypesofInitializationthedisplay*//*$PAGE*/*MAIN**********************************************************************************************************/voidmain(void){PC_DispClrScr(DISP_FGND_WHITE+DISP_BGND_BLACK);/*Clearthescreen*/OSInit();/*InitializeuC/OS-II*/PC_DOSSaveReturn();/*SaveenvironmenttoreturntoDOS*/PC_VectSet(uCOS,OSCtxSw);/*InstalluC/OS-II'scontextswitchvector*///创建初始任务OSTaskCreate(TaskStart,(void*)0,&TaskStartStk[TASK_STK_SIZE-1],4);OSStart();/*Startmultitasking*/}/***********************************************************************************************************STARTUPTASK**********************************************************************************************************/voidTaskStart(void*pdata){#ifOS_CRITICAL_METHOD==3/*AllocatestorageforCPUstatusregister*/OS_CPU_SRcpu_sr;#endifINT16Skey;pdata=pdata;/*Preventcompilerwarning*/TaskStartDispInit();/*Initializethedisplay*/OS_ENTER_CRITICAL();PC_VectSet(0x08,OSTickISR);/*InstalluC/OS-II'sclocktickISR*/PC_SetTickRate(OS_TICKS_PER_SEC);/*Reprogramtickrate*/OS_EXIT_CRITICAL();OSStatInit();/*InitializeuC/OS-II'sstatistics*/TaskStartCreateTasks();/*Createalltheapplicationtasks*/for(;;){ if(PC_GetKey(&key)==TRUE){/*Seeifkeyhasbeenpressed*/ if(key==0x1B){/*Yes,seeifit'stheESCAPEkey*/ PC_DOSReturn();/*ReturntoDOS*/ } } OSCtxSwCtr=0;/*Clearcontextswitchcounter*/ OSTimeDlyHMSM(0,0,1,0);/*Waitonesecond*/}}/*$PAGE*//***********************************************************************************************************INITIALIZETHEDISPLAY**********************************************************************************************************/staticvoidTaskStartDispInit(void){/*1111111111222222222233333333334444444444555555555566666666667777777777*//*01234567890123456789012345678901234567890123456789012345678901234567890123456789*/ PC_DispStr(0,0,"uC/OS-II,TheReal-TimeKernel",DISP_FGND_WHITE+DISP_BGND_RED+DISP_BLINK); PC_DispStr(0,1,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,2,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,3,"EXAMPLE#1TaskManagement",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,4,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,5,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,6,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,7,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,8,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,9,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,10,"Task0():",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,11,"Task1():",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,12,"Task2():",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,13,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,14,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,15,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,16,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,17,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,18,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,19,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,20,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,21,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,22,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,23,"",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(0,24,"<-PRESS'ESC'TOQUIT->",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY+DISP_BLINK);/*1111111111222222222233333333334444444444555555555566666666667777777777*//*01234567890123456789012345678901234567890123456789012345678901234567890123456789*/}/*$PAGE*//***********************************************************************************************************CREATETASKS**********************************************************************************************************/staticvoidTaskStartCreateTasks(void){INT8Ui;INT8Uerr; for(i=0;i<N_TASKS;i++){/*Createtasks*/ TaskData[i]=i;/*Eachtaskwilldisplayitsowninformation*/ } OSTaskCreate(Task0,(void*)&TaskData[0],&TaskStk[0][TASK_STK_SIZE-1],5); OSTaskCreate(Task1,(void*)&TaskData[1],&TaskStk[1][TASK_STK_SIZE-1],6); OSTaskCreate(Task2,(void*)&TaskData[2],&TaskStk[2][TASK_STK_SIZE-1],7); err=OSTaskSuspend(6);/*确保每个任务运行时其他任务被挂起 err=OSTaskSuspend(7);}/*$PAGE*//***********************************************************************************************************TASK#0**Description:Thistaskissuspendedbyitself,thenitwillberesumedbyothertasks.**********************************************************************************************************/voidTask0(void*pdata){ INT8Ui; INT8Uerr; i=*(int*)pdata; for(;;){ PC_DispStr(14,10,"task0isrunning.",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(14,11,"task1issuspended.",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);PC_DispStr(14,12,"task2issuspended.",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); OSTimeDly(200); err=OSTaskResume(6); err=OSTaskSuspend(5);/*suspenditself*/ }}/*$PAGE*//***********************************************************************************************************TASK#1*Description:Thistaskresumetask0*/voidTask1(void*pdata){ INT8Ui; INT8Uerr; i=*(int*)pdata; for(;;){ OSTimeDly(200); PC_DispStr(14,10,"task0issuspended.",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY); PC_DispStr(14,11,"task1isrunning.",DISP_FGND_BLACK+DISP_BGND_LIGHT_GRAY);PC_DispSt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合同法律谚语
- 合同法563条内容包括
- 2024届河北省唐山市林西中学中考二模英语试题含答案
- 油用向日葵夏播栽培技术规程(征求意见稿)
- 2024届湖北省谷城县达标名校中考英语四模试卷含答案
- 2024届河南省安阳市滑县重点达标名校中考英语对点突破模拟试卷含答案
- 人际关系与情商的艺术
- TFT系列偏光片行业相关投资计划提议
- 福建省福州一中2024-2025学年九年级物理阶段性热学考试(无答案)
- 湖北省天门市华斯达学校2024-2025学年九年级上学期九月考试英语试卷(B)
- 中国NAD补充剂行业市场现状分析及竞争格局与投资发展研究报告(2024-2030版)
- 2024至2030年中国钢铁行业节能减排行业市场发展现状及投资规划建议报告
- 抖音:短视频与直播运营全套教学课件
- 2024年建筑业10项新技术
- (2024年)剪映入门教程课件
- 2024年上海外服招聘笔试参考题库附带答案详解
- 创意绘画《共度国庆》课件
- 蓝色可爱卡通竞选班长通用PPT模板
- 商品住宅使用说明书(贵州省
- 英语人称代词和物主代词练习题(附答案)
- 武汉方圆钛白粉有限公司实习报告
评论
0/150
提交评论