?? test.c
字號:
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;
i++;
if(i == 10)
{
if(f_k == 20)
{
f_k =-20;
}
else
{
f_k = 20;
}
i = 0;
}
x1_k1 = (T*x2_k + x1_k);
a = ( -K/M )*T;
b = ( -C/M )*T;
c = ( f_k/M )*T + 1;
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/10), 18, 219, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY); //display the simulate object
PC_DispChar( (45 + x2_k1/10), 19, 219, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
OSTimeDly(1);
PC_DispStr( (45 + x2_k1/10-5), 18," " , DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
PC_DispStr( (45 + x2_k1/10-5), 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 + -