资源描述:
《实验八 ucos-ii的互斥信号量》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验八uCOS的互斥信号量一:实验目的:1.理解互斥型信号量。2.学会使用互斥型信号量实现对共享资源的独占式处理。3.解决任务在使用独占式资源出现的优先级反转问题。二:实验内容:完成教材5-7实验,使用互斥型信号量实现对共享资源的独占式处理。实验中要求要创建互斥型信号量,请求互斥型信号量,发送互斥型信号量,删除互斥型信号量。三:程序代码:#include"includes.h"#defineTASK_STK_SIZE512OS_STKStartTaskStk[TASK_STK_SIZE];OS_STKMyTaskStk[TASK_STK_SIZE];OS_S
2、TKYouTaskStk[TASK_STK_SIZE];OS_STKHerTaskStk[TASK_STK_SIZE];INT16Skey;char*s1="MyTaskrunning--yangkun";char*s2="YouTaskrunning--yangkun";char*s3="HerTaskrunning--yangkun";char*s4="MyTaskpend_Semp";char*s5="HerTaskpend_Semp";INT8Uerr;INT8Uy=0;INT32UTimes=0;OS_EVENT*Semp;voidStartTas
3、k(void*pdata);voidMyTask(void*pdata);voidYouTask(void*pdata);voidHerTask(void*pdata);voidmain(void){OSInit();PC_DOSSaveReturn();PC_VectSet(uCOS,OSCtxSw);Semp=OSMutexCreate(1,&err);OSTaskCreate(StartTask,(void*)0,&StartTaskStk[TASK_STK_SIZE-1],0);OSStart();}voidStartTask(void*pdata)
4、{#ifOS_CRITICAL_METHOD==3OS_CPU_SRcpu_sr;#endifpdata=pdata;OS_ENTER_CRITICAL();PC_VectSet(0x08,OSTickISR);PC_SetTickRate(OS_TICKS_PER_SEC);OS_EXIT_CRITICAL();OSStatInit();OSTaskCreate(MyTask,(void*)0,&MyTaskStk[TASK_STK_SIZE-1],3);OSTaskCreate(YouTask,(void*)0,&YouTaskStk[TASK_STK_
5、SIZE-1],4);OSTaskCreate(HerTask,(void*)0,&HerTaskStk[TASK_STK_SIZE-1],5);for(;;){if(PC_GetKey(&key)==TRUE){if(key==0x1B){PC_DOSReturn();}}OSTimeDlyHMSM(0,0,3,0);}}voidMyTask(void*pdata){#ifOS_CRITICAL_METHOD==3OS_CPU_SRcpu_sr;#endifpdata=pdata;for(;;){OSTimeDlyHMSM(0,0,0,200);{PC_D
6、ispStr(10,++y,s4,DISP_BGND_BLACK+DISP_FGND_WHITE);OSMutexPend(Semp,0,&err);PC_DispStr(10,++y,s1,DISP_BGND_BLACK+DISP_FGND_WHITE);}OSTimeDlyHMSM(0,0,0,200);}}voidYouTask(void*pdata){#ifOS_CRITICAL_METHOD==3OS_CPU_SRcpu_sr;#endifpdata=pdata;for(;;){PC_DispStr(10,++y,s2,DISP_BGND_BLAC
7、K+DISP_FGND_WHITE);OSTimeDlyHMSM(0,0,0,300);}}voidHerTask(void*pdata){#ifOS_CRITICAL_METHOD==3OS_CPU_SRcpu_sr;#endifpdata=pdata;for(;;){PC_DispStr(10,++y,s5,DISP_BGND_BLACK+DISP_FGND_WHITE);OSMutexPend(Semp,0,&err);PC_DispStr(10,++y,s3,DISP_BGND_BLACK+DISP_FGND_WHITE);for(Times;Tim
8、es<20000000;Times++){OS_Sc