⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.c.bak

📁 利用RTOS機制實現機械系統中的質量
💻 BAK
📖 第 1 页 / 共 2 页
字号:
    PC_DispStr( 0, 15, "                               |-||\\/\\/\\/\\|   |                             ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
    PC_DispStr( 0, 16, "                                | |       |   |                                 ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
    PC_DispStr( 0, 17, "                               |-||       |___|                                 ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
    PC_DispStr( 0, 18, "                               _|_|                                             ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
    PC_DispStr( 0, 19, "                                                                                ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
    PC_DispStr( 0, 20, "                                                                                ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);    
    PC_DispStr( 0, 21, "                                                                                ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
    PC_DispStr( 0, 22, "#Tasks          :        CPU Usage:     %                                       ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
    PC_DispStr( 0, 23, "#Task switch/sec:                                                               ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
    PC_DispStr( 0, 24, "                            <-PRESS 'ESC' TO QUIT->                             ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);
/*                                1111111111222222222233333333334444444444555555555566666666667777777777 */
/*                      01234567890123456789012345678901234567890123456789012345678901234567890123456789 */
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                           UPDATE THE DISPLAY
*********************************************************************************************************
*/

static  void  TaskStartDisp (void)
{
    char   s[80];


    sprintf(s, "%5d", OSTaskCtr);                                  /* Display #tasks running               */
    PC_DispStr(18, 22, s, DISP_FGND_YELLOW + DISP_BGND_BLUE);

#if OS_TASK_STAT_EN > 0
    sprintf(s, "%3d", OSCPUUsage);                                 /* Display CPU usage in %               */
    PC_DispStr(36, 22, s, DISP_FGND_YELLOW + DISP_BGND_BLUE);
#endif

    sprintf(s, "%5d", OSCtxSwCtr);                                 /* Display #context switches per second */
    PC_DispStr(18, 23, s, DISP_FGND_YELLOW + DISP_BGND_BLUE);

    sprintf(s, "V%1d.%02d", OSVersion() / 100, OSVersion() % 100); /* Display uC/OS-II's version number    */
    PC_DispStr(75, 22, s, DISP_FGND_YELLOW + DISP_BGND_BLUE);

    switch (_8087) {                                               /* Display whether FPU present          */
        case 0:
             PC_DispStr(71, 21, " NO  FPU ", DISP_FGND_YELLOW + DISP_BGND_BLUE);
	     break;

        case 1:
	     PC_DispStr(71, 21, " 8087 FPU", DISP_FGND_YELLOW + DISP_BGND_BLUE);
             break;

        case 2:
             PC_DispStr(71, 21, "80287 FPU", DISP_FGND_YELLOW + DISP_BGND_BLUE);
             break;

        case 3:
             PC_DispStr(71, 21, "80387 FPU", DISP_FGND_YELLOW + DISP_BGND_BLUE);
             break;
    }
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                             CREATE TASKS
*********************************************************************************************************
*/

static  void  TaskStartCreateTasks (void)
{
    
    OSTaskCreateExt(Task1,
                   (void *)0,
                   &Task1Stk[TASK_STK_SIZE - 1],
                   TASK_1_PRIO,
                   TASK_1_ID,
                   &Task1Stk[0],
                   TASK_STK_SIZE,
                   (void *)0,
                   OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);

    OSTaskCreateExt(Task2,
                   (void *)0,
                   &Task2Stk[TASK_STK_SIZE - 1],
                   TASK_2_PRIO,
                   TASK_2_ID,
                   &Task2Stk[0],
                   TASK_STK_SIZE,
                   (void *)0,
                   OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
                   
    OSTaskCreateExt(TaskClk,
                   (void *)0,
                   &TaskClkStk[TASK_STK_SIZE - 1],
                   TASK_CLK_PRIO,
                   TASK_CLK_ID,
                   &TaskClkStk[0],
                   TASK_STK_SIZE,
                   (void *)0,
                   OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);

}

/*$PAGE*/
/*
*********************************************************************************************************
*                                               TASK #1
*
* Description: This task executes every 100 mS and measures the time it task to perform stack checking
*              for each of the 5 application tasks.  Also, this task displays the statistics related to
*              each task's stack usage.
*********************************************************************************************************
*/

void  Task1 (void *pdata)
{
     float	 a,b,d;
     pdata=pdata;
     for(;;)
     {
      if(flag == 1)
          {
     	    if(inpFlag == 1)
                {                       // If M,C,K value Has Changed 
    	  		x1_k = 0.0;	// Initialize x1(k)
          		x1_k1 = 0.0;	// Initialize x1(k+1)
    	 		x2_k = 0.0;	// Initialize x2(k)
          		x2_k1 = 0.0;	// Initialize x2(k+1)
          		f_k = 0.0;
                	Ts = 0;         // Initialize Time 
                	inpFlag = 0;	        
                }		
		    
            Ts = Ts + T;

            f_k = sin(150.0*PI*Ts/180);            
            
     	    x1_k1 = (T*x2_k + x1_k);
     
            a = ( -K/M );
            b = ( -C/M );
            d = ( f_k/M );
     
            x2_k1 = (a*x1_k + b*x2_k + d);    
            x1_k = x1_k1;
            x2_k = x2_k1;
            
            flag = 0;
         } 
        OSTimeDly(1);       	
     }
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                               TASK #2
*
* Description: This task displays a clockwise rotating wheel on the screen.
*********************************************************************************************************
*/

void  Task2 (void *data)
{
      char	  s[20], s1[20], s2[20], s3[20], s4[20];

      //pdata=pdata;


      for(;;)
     	{               
      		sprintf(s, "X= %12.10f",x2_k1);      /* Print The Position */
      		PC_DispStr( 52, 12, s, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
      

      		sprintf(s1, "M = %-10.1f",M);       /* Print The M Value */
      		PC_DispStr( 52, 13, s1, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
      

      		sprintf(s2, "C = %-10.1f",C);       /* Print The C Value */
      		PC_DispStr( 52, 14, s2, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
      

      		sprintf(s3, "K = %-10.1f",K);       /* Print The K Value */   
      		PC_DispStr( 52, 15, s3, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
      

      		sprintf(s4, "T = %-15.5f",Ts);      /* Print The Real-Time */ 
      		PC_DispStr( 52, 16, s4, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
      
      		PC_DispChar( (45 + x2_k1*50), 18, 219, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);      //display the simulate object
      		PC_DispChar( (45 + x2_k1*50), 19, 219, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
      		OSTimeDly(1);

      		PC_DispStr( (45 + x2_k1*50-8), 18,"                 " , DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
      		PC_DispStr( (45 + x2_k1*50-8), 19,"                 " , DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
                         
      }         
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                               CLOCK TASK
*********************************************************************************************************
*/

void  TaskClk (void *data)
{
    char s[40];


    data = data;
    for (;;) {
        PC_GetDateTime(s);
        PC_DispStr(60, 23, s, DISP_FGND_YELLOW + DISP_BGND_BLUE);
        OSTimeDly(OS_TICKS_PER_SEC);
    }
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                               CLOCK TASK
*********************************************************************************************************
*/

void tickISR()
{
    counter++;         		 //one tick is 1ms

    if(counter == 5)
       {           		 //If Time's Up (5ms) then flag = 1 To Run Real-Time Task -> task1
    		flag = 1;        
    		counter = 0;
       }	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -