2020-11-19

/**********
任务My 中创建了任务YOU 
任务YOU 中存在一个延时并且大于任务My的延时事件
这样虽然在任务YOU 中输出一个全局变量
但是在运行时输出的却是任务My 赋值的字符串
这就很好解释了 ucos ii 中
对任务发送事件和请求事件以及 对事件的操作都定义为全局函数
以便用程序的所有任务来调用
*************/



#include "includes.h"


#define TASK_STK_SIZE 64     //ÈÎÎñ¶ÑÕ»µÄ³¤¶È

char *ss;
OS_STK MyTaskStk[TASK_STK_SIZE]; //¶¨ÒåÈÎÎñµÄ¶ÑÕ»Çø
OS_STK YouTaskStk[TASK_STK_SIZE]; //¶¨ÒåÈÎÎñµÄ¶ÑÕ»Çø
INT16S key;
INT8U  y1=0,y2=0;
char *s;
void MyTask(void *data);
void YouTask(void *data);


OS_STK MyTaskStk[TASK_STK_SIZE];
OS_STK YouTaskStk[TASK_STK_SIZE];


void MyTask(void *pdata)
{
  #if OS_CRITICAL_METHOD==3
  OS_CPU_SR cpu_sr;
  #endif
  INT8U err;
  pdata = pdata;
  OS_ENTER_CRITICAL();
  PC_VectSet(0x08,OSTickISR);
  PC_SetTickRate(OS_TICKS_PER_SEC);  //
  OS_EXIT_CRITICAL();
  OSStatInit();  //³õʼ»¯Í³¼ÆÈÎÎñ
//  OSTaskCreate(YouTask,
//					(void *)0,
//					&YouTaskStk[TASK_STK_SIZE-1],   //ÉèÖÃÈÎÎñ¶ÑÕ»µÄÕ»¶¥¡¡Ö¸Õë¡¡
//					2);

  for(;;)
  {
	s = "MyTaskMMMMMMMM";
	PC_DispStr(5,++y1,s,DISP_BGND_BLACK+DISP_FGND_WHITE);

	if(PC_GetKey(&key)==TRUE)
	{
	 if(key==0x1b)
	 { PC_DOSReturn();}
	}
	OSTimeDly(400);
  }
}

void YouTask(void *pdata)
{
  #if OS_CRITICAL_METHOD == 3
  OS_CPU_SR cpu_sr;
  #endif
  INT8U err;
  pdata = pdata;
  for(;;)
  {
	s = "YouTaskYYYYYY";
	PC_DispStr(30,++y2,s,DISP_BGND_BLACK+DISP_FGND_WHITE);
	OSTimeSet(0); //ÉèÖÃOSTime = 0
	//ÉèÖõ±Ç°ÏµÍ³µÄʱÖÓ¡¡ÊýÖµ¡¡
	while(OSTime<400)
	{
	 sprintf(ss,"%d",OSTimeGet());  //   »ñÈ¡µ±Ç°ÏµÍ³ÊýÖµ
	 PC_DispStr(55,y2,s,DISP_BGND_BLACK+DISP_FGND_WHITE);
	 OSTimeDly(200); //ÑÓʱ 200
	}
  }
}


void main(void)
{
	OSInit();    //³õʼ»¯ucos ii
	PC_DOSSaveReturn();  //±£´æDOS»·¾³
	PC_VectSet(uCOS,OSCtxSw);  //°²×°ucos II ÖжÏ

	OSTaskCreate( MyTask,
					  (void *)0,
					  &MyTaskStk[TASK_STK_SIZE-1],
					  0);  //ʹÓÃÈÎÎñµÄ ÓÅÏȼ¶

	//Èç¹û¡¡°ÑYouTask ÈÎÎñ·ÅÔÚÖ÷º¯ÊýÖп´¿´¡¡Êä³öЧ¹û¡¡
	OSTaskCreate(YouTask,
					(void *)0,
					&YouTaskStk[TASK_STK_SIZE-1],   //ÉèÖÃÈÎÎñ¶ÑÕ»µÄÕ»¶¥¡¡Ö¸Õë¡¡
					2);

	OSStart(); //Æô¶¯ ¶àÈÎÎñ¹ÜÀí
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值