实时操作系统实验报告

  • 格式:doc
  • 大小:402.00 KB
  • 文档页数:27

下载文档原格式

  / 27
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实时操作系统实验报告

专业:通信工程

学号:---------

姓名:--------

指导老师: ------

实验一任务编程实验

实验目的:

●理解任务管理的基本原理,了解任务的各个基本状态及其变迁过程;

●掌握µC/OS-II系统的编程方法,包括main函数的书写方法,任务组成、

创建、启动和时间函数,主要包括:

⏹OSInit; OSStart; OSTaskCreate;PC_DispStr;PC_GetKey;

OSTimeDlyHMSM;OSTimeDly;OSTimeGet等。

实验要求与思路:

创建3个任务task1、task2、task3.task1完成利用OSTimeGet(或PC_GetDateTime)实现时间的获取,同时利用PC_DispStr实现时间的显示。Task2和task3各自完成一个动画显示的任务——在屏幕上依次输出字符“|”、“\”、“—”、“/”而产生一个向左转动和向右转动的动画标志。同时需要编写一个启动任务实现对时间任务的启动。

实验程序:

#include "includes.h"

#define TASK_STK_SIZE 512

#define TASK_START_PRIO 2

#define TASK_1_PRIO 4

#define TASK_2_PRIO 5

#define TASK_3_PRIO 6

OS_STK TaskStartStk[TASK_STK_SIZE];

OS_STK Task1Stk[TASK_STK_SIZE];

OS_STK Task2Stk[TASK_STK_SIZE];

OS_STK Task3Stk[TASK_STK_SIZE];

void TaskStart(void *pdata);

void Task1(void *pdata);

void Task2(void *pdata);

void Task3(void *pdata);

void TaskStartDispInit (void);

void main(void)

{

OSInit();

PC_DOSSaveReturn();

PC_VectSet(uCOS,OSCtxSw);

OSTaskCreate(TaskStart,0,&TaskStartStk[TASK_STK_SIZE-1],TASK_START_PRIO);

OSStart();

}

void TaskStart(void *pdata)

{

INT16S key=0;

INT8U err;

pdata=pdata;

TaskStartDispInit();

OS_ENTER_CRITICAL();

PC_VectSet(0x08,OSTickISR);

PC_SetTickRate(OS_TICKS_PER_SEC);

OS_EXIT_CRITICAL();

OSStatInit();

err=OSTaskCreate(Task1,0,&Task1Stk[TASK_STK_SIZE-1],TASK_1_PRIO);

err=OSTaskCreate(Task2,0,&Task2Stk[TASK_STK_SIZE-1],TASK_2_PRIO);

err=OSTaskCreate(Task3,0,&Task3Stk[TASK_STK_SIZE-1],TASK_3_PRIO);

for(;;){

if(PC_GetKey(&key)){

if(key==0x1B){

PC_DOSReturn();

}

}

OSCtxSwCtr=0;

OSTimeDly(OS_TICKS_PER_SEC);

}

}

void TaskStartDispInit (void)

{

/* 1111111111222222222233333333334444444444555555555566666666667777777777 */

/* 01234567890123456789012345678901234567890123456789012345678901234567890123456789 */

PC_DispStr( 0, 0, " uC/OS-II, The Real-Time Kernel

", DISP_FGND_WHITE + DISP_BGND_RED + DISP_BLINK);

PC_DispStr( 0, 1, " Jean J. Labrosse

", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

PC_DispStr( 0, 2, "

", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

PC_DispStr( 0, 3, " EXAMPLE #2

", 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, "