示例#1
0
文件: monitor.c 项目: arkadijs/ucos
void OSMonitorTask(void *data)
{
	unsigned char s[128];
	int i, j, badcmd;

	for(i = 0; cmds[i].Name != NULL; ++i)
	  cmds[i].NameLen = strlen(cmds[i].Name);

	while(1)
	{
	  OSPrintf("monitor>");
	  OSGets(s);
	  if(s[0] == '\0')
	    continue;
	  for(i = 0; s[i] == ' ' && s[i] != '\0'; ++i)
	    ;
	  badcmd = 1;
	  for(j = 0; cmds[j].Name != NULL; ++j)
	    if(!strncmp(cmds[j].Name, &s[i], cmds[j].NameLen))
	    {
	      cmds[j].Func(s + i + cmds[j].NameLen);
	      badcmd = 0;
	    }
	  if(badcmd)
	    OSPrintf("monitor: command not found\n");
	}
}
示例#2
0
文件: main.c 项目: Gewin/Ucos
void Task1(void *pdata)				//任务1,控制LED灯亮,开启蜂鸣器同时鸣叫
{
	U16 task1Cnt=0;

	if(user_task1_firstboot == 1)
	{
		// RTC初始化
		Rtc_Init();

		user_task1_firstboot = 0;
	}

	while (1)
	{
		task1Cnt++;
		OSPrintf("\nEnter Task1\n");
		OSPrintf("uC/OS Version:V%4.2f\n",(float)OSVersion()*0.01);//打印uC/OS的版本号 

		//实现流水灯
		if((task1Cnt%5) == 0)
			rGPBDAT = 0x1E0;				//全灭
		else
			rGPBDAT = rGPBDAT - (0x10<<(task1Cnt%5));	//流水灯
#if 0
		//蜂鸣器鸣叫
		Beep(3000, 60);
		Beep(2500, 60);
		Beep(2000, 60);
		Beep(1500, 60);
		Beep(1000, 60);
		Beep(900, 60);
#endif		
		OSTimeDly(OS_TICKS_PER_SEC*5);
	}
}
示例#3
0
文件: main.c 项目: Gewin/Ucos
void Task0(void *pdata)				//任务0,打印CPU占用率
{
	while (1)
	{
		OSPrintf("\nEnter Task0\n");
		OSPrintf("\nTest by me for git\n");
		OSPrintf("CPU Usage: %d%%\n",OSCPUUsage); //打印CPU占用率,调用系统变量实现

		OSTimeDly(OS_TICKS_PER_SEC);
	}
}
示例#4
0
文件: monitor.c 项目: arkadijs/ucos
void _monitor_ps(unsigned char *params)
{
	int     i, printed;
	char    stat;
	OS_TCB *p;

	for(i = 0, printed = 0; i < OS_LO_PRIO + 1; ++i)
	{
	  if(printed%23 == 0)
	  {
	    if(printed != 0)
	    {
	      OSPrintf("\npress any key to continue");
	      OSGetKey();
	      OSPrintf("\n");
	    }
	    OSPrintf("PRIO STAT      DLY STACK ptr     used NAME");
	  }

	  p = OSTCBPrioTbl[i];
	  if(p != NULL)
	  {
	    switch(p->OSTCBStat)
	    {
	    case OS_STAT_RDY:
	      if(p->OSTCBDly == 0)
		stat = 'R';
	      else
		stat = 'W';
	      break;
	    case OS_STAT_MBOX: stat = 'M'; break;
	    case OS_STAT_SEM:  stat = 'S'; break;
	    case OS_STAT_Q:    stat = 'Q'; break;
	    default:           stat = 'U'; break;
	    }

	    OSPrintf("\n%4d%5c %08X  %08X %08X %s",
		     (int)p->OSTCBPrio,
		     stat,
		     p->OSTCBDly,
		     p->OSTCBStkPtr,
		     (int)((char*)p->OSTCBInitialStkPtr - (char*)p->OSTCBStkPtr),
		     p->TaskName);
	    ++printed;
	  }
	}
	OSPrintf("\n");
	return;
}
示例#5
0
文件: main.c 项目: Gewin/Ucos
void MainTask(void *pdata) //Main Task create taks0 and task1
{
	#if OS_CRITICAL_METHOD == 3		/* Allocate storage for CPU status register */
		OS_CPU_SR  cpu_sr;
	#endif
	OS_ENTER_CRITICAL();

	Timer0Init();				//initial timer0 for ucos time tick
	ISRInit();				//initial interrupt prio or enable or disable

	OS_EXIT_CRITICAL();

	OSPrintfInit();				//use task to print massage to Uart 

	OSStatInit();
	OSTaskCreate (Task0,(void *)0, &Task0Stk[Task0StkLengh - 1], Task0Prio);	
	OSTaskCreate (Task1,(void *)0, &Task1Stk[Task1StkLengh - 1], Task1Prio);	
	OSTaskCreate (Task2,(void *)0, &Task2Stk[Task2StkLengh - 1], Task2Prio);	 
	OSTaskCreate (Task3,(void *)0, &Task3Stk[Task2StkLengh - 1], Task3Prio);	 
	while(1)
	{
		OSPrintf("\nEnter Main Task\n");
		OSTimeDly(OS_TICKS_PER_SEC);
	}
}
示例#6
0
文件: main.c 项目: Gewin/Ucos
void Task2(void *pdata)
{
	unsigned int i, x, m, n, k, y;
	int tmp,key;         

	int width = 10;
	int height = 100;

	if(user_task2_firstboot == 1)
	{
		//LCD 初始化
		Lcd_Display();

		user_task2_firstboot = 0;
	}

	while(1)
	{
		i++;
		if(i>99)i=0;

		if(rBCDYEAR == 0x99)
			rYear = 1999;
		else
			rYear    = (2000 + rBCDYEAR);
			rMonth   = FROM_BCD(rBCDMON & 0x1f);
			rDay		= FROM_BCD(rBCDDAY & 0x03f);
			rDayOfWeek = rBCDDATE - 1;
			rHour    = FROM_BCD(rBCDHOUR & 0x3f);
			rMinute     = FROM_BCD(rBCDMIN & 0x7f);
			rSecond     = FROM_BCD(rBCDSEC & 0x7f);

		OSTimeDly( 5 );
		OSPrintf("\nEnter Task2\n");	
		OSPrintf("LCD display Test!\n\n");	

		//在LCD上打印日期,星期,时间
		Lcd_printf(0,65,RGB( 0xFF,0xFF,0xFF),RGB( 0x00,0x00,0x00),0,"时间:%4d-%02d-%02d 星期%d  %02d:%02d:%02d\n",
        	      rYear, rMonth, rDay,rDayOfWeek, rHour, rMinute, rSecond);

		Lcd_printf(84,92,RGB( 0xFF,0xFF,0xFF),RGB( 0x00,0x00,0x00),1," uC/OS2任务演示");
		Lcd_printf(89,122,RGB( 0xFF,0xFF,0xFF),RGB( 0x00,0x00,0x00),0,"任务 计数中:%02d" , i);

		OSTimeDly(OS_TICKS_PER_SEC/5);
	}
}
示例#7
0
文件: main.c 项目: Gewin/Ucos
void Task3(void *pData)
{
	while (1)
	{
		OSPrintf("\nEnter Task3\n");

		OSTimeDly(OS_TICKS_PER_SEC);
	}
}