📄 test.c
字号:
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, 24, s, DISP_FGND_YELLOW + DISP_BGND_BLUE);
switch (_8087) { /* Display whether FPU present */
case 0:
PC_DispStr(71, 22, " NO FPU ", DISP_FGND_YELLOW + DISP_BGND_BLUE);
break;
case 1:
PC_DispStr(71, 22, " 8087 FPU", DISP_FGND_YELLOW + DISP_BGND_BLUE);
break;
case 2:
PC_DispStr(71, 22, "80287 FPU", DISP_FGND_YELLOW + DISP_BGND_BLUE);
break;
case 3:
PC_DispStr(71, 22, "80387 FPU", DISP_FGND_YELLOW + DISP_BGND_BLUE);
break;
}
}
/*$PAGE*//*
*********************************************************************************************************
* DISPLAY TASK RELATED STATISTICS
*********************************************************************************************************
*/
void DispTaskStat (INT8U id)
{
char s[80];
sprintf(s, "%-18s %10u %10ld",
TaskUserData[id].TaskName,
TaskUserData[id].TaskExecTime,
TaskUserData[id].TaskTotExecTime);
PC_DispStr(0, id + 1, s, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
}
/*
*********************************************************************************************************
* CREATE TASKS
*********************************************************************************************************
*/
static void TaskStartCreateTasks (void)
{
INT8U i;
char temp[10]={0};
for (i = 0; i < N_TASKS; i++) { /* Create N_TASKS identical tasks */
TaskUserData[i].value = '0' + i; /* Each task will display its own letter */
TaskData[i] = '0' + i;
sprintf(temp, "Task%d", i);
strcpy(TaskUserData[i].TaskName,temp);
OSTaskCreateExt(Task,
(void *)&TaskData[i],
&TaskStk[i+1][TASK_STK_SIZE - 1],
i + 1,
i + 1,
&TaskStk[i+1][0],
TASK_STK_SIZE,
&TaskUserData[i+1],
0);
}
}
/*
*********************************************************************************************************
* TASKS
*********************************************************************************************************
*/
void Task (void *pdata)
{
INT8U x;
INT8U y;
INT8U err;
for (;;) {
OSSemPend(RandomSem, 0, &err); /* Acquire semaphore to perform random numbers */
x = random(80); /* Find X position where task number will appear */
y = random(10); /* Find Y position where task number will appear */
OSSemPost(RandomSem); /* Release semaphore */
/* Display the task number on the screen */
PC_DispChar(x, y + 11,*(char *)pdata, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
OSTimeDly(1); /* Delay 1 clock tick */
}
}
/*
*********************************************************************************************************
* OS INITIALIZATION HOOK
* (BEGINNING)
*********************************************************************************************************
*/
void OSInitHookBegin (void)
{
}
/*
*********************************************************************************************************
* OS INITIALIZATION HOOK
* (END)
*********************************************************************************************************
*/
void OSInitHookEnd (void)
{
}
/*
*********************************************************************************************************
* TASK CREATION HOOK
*********************************************************************************************************
*/
void OSTaskCreateHook (OS_TCB *ptcb)
{
ptcb = ptcb; /* Prevent compiler warning */
}
/*
*********************************************************************************************************
* TASK DELETION HOOK
*********************************************************************************************************
*/
void OSTaskDelHook (OS_TCB *ptcb)
{
ptcb = ptcb; /* Prevent compiler warning */
}
/*
*********************************************************************************************************
* IDLE TASK HOOK
*********************************************************************************************************
*/
void OSTaskIdleHook (void)
{
}
/*
*********************************************************************************************************
* STATISTIC TASK HOOK
*********************************************************************************************************
*/
void OSTaskStatHook (void)
{
char s[80];
INT8U i;
INT32U total;
INT8U pct;
for (i = 1; i < N_TASKS; i++) {
DispTaskStat(i); /* Display task data */
}
}
/*
*********************************************************************************************************
* TASK SWITCH HOOK
*********************************************************************************************************
*/
void OSTaskSwHook (void)
{
INT16U time;
TASK_USER_DATA *puser;
char s[10];
time = PC_ElapsedStop(); /* This task is done */
PC_ElapsedStart(); /* Start for next task */
puser = OSTCBCur->OSTCBExtPtr; /* Point to used data */
if (puser != (TASK_USER_DATA *)0) {
puser->TaskCtr++; /* Increment task counter */
puser->TaskExecTime = time; /* Update the task's execution time */
puser->TaskTotExecTime += time; /* Update the task's total execution time */
}
}
/*
*********************************************************************************************************
* OSTCBInit() HOOK
*********************************************************************************************************
*/
void OSTCBInitHook (OS_TCB *ptcb)
{
ptcb = ptcb; /* Prevent Compiler warning */
}
/*
*********************************************************************************************************
* TICK HOOK
*********************************************************************************************************
*/
void OSTimeTickHook (void)
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -