您的位置 首页 技术

ucos-ii学习笔记——首个多任务程序的创立

includeINCLUDEShdefineTASK_STK_SIZE512定义两个任务的任务堆栈,每一个任务有一个任务堆栈OS_STKMyTaskStk[TASK_STK_SIZE];OS_STK

#include“INCLUDES.h”

#defineTASK_STK_SIZE512

//界说两个使命的使命仓库,每一个使命有一个使命仓库

OS_STKMyTaskStk[TASK_STK_SIZE];

OS_STKYouTaskStk[TASK_STK_SIZE];

INT8Ux=0,y=0;//字符显现方位

//声明两个使命函数

voidMyTask(void*data);

voidYouTask(void*data);

voidmain(void)

{

char*s_m=”L”;

OSInit();

PC_DOSSaveReturn();

PC_VectSet(uCOS,OSCtxSw);

//创立MyTask使命

OSTaskCreate(MyTask,s_m,&MyTaskStk[TASK_STK_SIZE1],0);//创立开始函数

OSStart();

}

voidMyTask(void*pdata)

{

char*S=”C”;//界说要显现的字符

#ifOS_CRITICAL_METHOD==3

OS_CPU_SRcpu_sr;

#endif

INT16Skey;

pdata=pdata;

OS_ENTER_CRITICAL();

PC_VectSet(0x08,OSTickISR);

PC_SetTickRate(OS_TICKS_PER_SEC);

OS_EXIT_CRITICAL();

OSStatInit();

//在Mytask中创立使命YouTask

OSTaskCreate(YouTask,S,&YouTaskStk[TASK_STK_SIZE1],2);//创立使命函数

//其实在这里创立使命YouTask,也会履行一次使命的调度,只不过YouTask的优先级没有MyTask的高,所以

//持续履行使命MyTask,具体阐明请拜见P119

for(;;)

{

if(x>=4)//每行显现4个字符

{

x=0;

y+=2;

}

PC_DispChar(x,y,*(char*)pdata,DISP_BGND_BLACK+DISP_FGND_WHITE);//显现L

x+=1;

//假如恩下ESC键,则退出UC/OS-II

if(PC_GetKey(&key)==TRUE)

{

if(key==0x1B)

{

PC_DOSReturn();

}

}

OSTimeDlyHMSM(0,0,3,0);//Wait3s把cpu的控制权交出,让使命YouTask运转

//使命MyTask调用的推迟函数,推迟函数会从安排妥当表中删去当前使命,该使命就不再处于安排妥当状况

//然后会进行一次使命调度,履行下一个优先级最高的安排妥当使命

}

}

voidYouTask(void*pdata)

{

#ifOS_CRITICAL_METHOD==3//AllocatestorageforCPUstatusregister

OS_CPU_SRcpu_sr;

#endif

pdata=pdata;

for(;;)

{

if(x>=4)

{

x=0;

y+=2;

}

PC_DispChar(x,y,*(char*)pdata,DISP_BGND_BLACK+DISP_FGND_WHITE);

x+=1;

OSTimeDlyHMSM(0,0,1,0);//等候1s,交出cpu的控制权,让使命Mytask运转

}

}

//由于MyTask的等候时间为3s,YouTask的等候时间为1s,所以MyTask每履行一次,YouTask履行3次

//程序运转的作用为每显现一个L,显现3个C

//由于在MyTask显现完L后就交出了cpu,所以YouTask会立马履行,显现一个C,所以看到的作用相当于L和第一个C一起显现

//今后两个C的显现距离1s

//准时,分,秒,毫秒延时函数OSTimeDlyHMSM();实质上是调用了使命节拍延时函数,OSTimeDly();

//延时函数OSTimeDly();以时钟节拍数进行延时,在函数中,调用了OSSched();使命调度。

//由于在函数中,首先从安排妥当表中删去当前使命,最终再进行使命的调度。所以当使命调用了推迟函数后,那么该

//使命就处于等候状况了,交出了cpu的使用权。而最终的使命调度就会履行下一个优先级最高的安排妥当使命。

//具体请拜见P145

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/256328.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部