文档详情

实时操作系统实验.doc

发布:2017-06-21约2.7万字共18页下载文档
文本预览下载声明
实时操作系统实验报告 专业:10通信工程 学号:20100306110 姓名: 汪 洁 指导老师:申屠浩 实验一 任务管理实验 实验目的: 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) 如此循环 实验程序: #include includes.h #define TASK_STK_SIZE 512 OS_STK TaskStk1[TASK_STK_SIZE]; OS_STK TaskStk2[TASK_STK_SIZE]; OS_STK TaskStk3[TASK_STK_SIZE]; OS_STK TaskStartStk[TASK_STK_SIZE]; void Task1(void *data); void Task2(void *data); void Task3(void *data); /* Function prototypes of tasks*void TaskStart(void *data); /* Function prototypes of Startup task */ static void TaskStartCreateTasks(void); static void TaskStartDispInit(void); void main (void) { PC_DispClrScr(DISP_FGND_WHITE + DISP_BGND_BLACK); /* Clear the screen */ OSInit(); /* Initialize uC/OS-II */ PC_DOSSaveReturn(); /* Save environment to return to DOS */ PC_VectSet(uCOS, OSCtxSw); /* Install uC/OS-IIs context switch vector */ OSTaskCreate(TaskStart, (void *)0, TaskStartStk[TASK_STK_SIZE - 1], 0); OSStart(); /* Start multitasking */ } void TaskStart (void *pdata) { #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */ OS_CPU_SR cpu_sr; #endif char s[100]; INT16S key; pdata = pdata; TaskStartDispInit(); /* Initialize the display */ OS_ENTER_CRITICAL(); PC_VectSet(0x08, OSTickISR); /* Install uC/OS-IIs clock tick ISR */ PC_SetTickRate(OS_TICKS_PER_SEC); /* Reprogram tick rate */ OS_EXIT_CRITICAL(); OSStatInit(); /* Initialize uC/OS-IIs statist
显示全部
相似文档