ucosII嵌入式实时操作系统实验 联系客服

发布时间 : 星期四 文章ucosII嵌入式实时操作系统实验更新完毕开始阅读bf5ef91959eef8c75fbfb346

x += 1;

//如果按下Esc键则退出uCOS_II if (PC_GetKey(&key) == TRUE)

{

if (key == 0x1B)

{

PC_DOSReturn(); } }

OSTimeDlyHMSM(0, 0, 4, 0); //等待

} }

/************************

YouTask*****************************************/

void YouTask (void *pdata) {

#if OS_CRITICAL_METHOD == 3 OS_CPU_SR cpu_sr; #endif

char *s1=\ char *s2=\ pdata = pdata; for (;;) {

if(OSTaskDelReq(OS_PRIO_SELF)==OS_TASK_DEL_REQ) {

PC_DispStr(10, 10,

//显示字符的位置 s1,

DISP_BGND_BLACK+DISP_FGND_BLUE );

OSTimeDlyHMSM(0, 0, 10, 0);

PC_DispStr(10, 12, //显示字符的位置

s2,

DISP_BGND_BLACK+DISP_FGND_BLUE );

OSTaskDel(OS_PRIO_SELF); }

if (x>50) { x=0; y+=2;

}

PC_DispChar(x, y,

//显示字符的位置

*(char*)pdata,

DISP_BGND_BLACK+DISP_FGND_BLUE );

x += 1;

OSTimeDlyHMSM(0, 0, 4, 0); //等待

} }

/************************

任HerTask*****************************************/

void HerTask (void *pdata) {

#if OS_CRITICAL_METHOD == 3 OS_CPU_SR cpu_sr; #endif

char *s3=\ char *s4=\ pdata = pdata; for (;;) {

if(OSTaskDelReq(OS_PRIO_SELF)==OS_TASK_DEL_REQ)

{

PC_DispStr(10, 14,

s3,

DISP_BGND_BLACK+DISP_FGND_YELLOW );

//显示字符的位置

OSTimeDlyHMSM(0, 0, 10, 0); PC_DispStr(10, 16,

s4,

DISP_BGND_BLACK+DISP_FGND_YELLOW );

//显示字符的位置

OSTaskDel(OS_PRIO_SELF); }

if (x>50)

{ x=0; y+=2;

}

//显示字符的位置

PC_DispChar(x, y,

*(char*)pdata,

DISP_BGND_BLACK+DISP_FGND_YELLOW );

x += 1;

//等待

OSTimeDlyHMSM(0, 0, 1, 0); } }

五、实验现象与结果分析

5.1习题13运行结果如下:

分析:因为分别将3个任务的延迟时间分别设为2ms,4ms,6ms会出现交替显示GYH,但G显示的频率要高于YH。 5.2习题第15题的运行结果:

分析:在YouTask和MyTask删除时间到来之前,两个任务运行并交替显示字符Y,H,且H显示频率要高,在适合的时间(编写者自己规定)YouTask和MyTask要求删除自身,于是YouTask和MyTask被删除,后面只显示字符M。