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

📄 test.c

📁 一个中间件平台
💻 C
📖 第 1 页 / 共 2 页
字号:
    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, 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*/

/*

*********************************************************************************************************

*                                               TASK #1

*********************************************************************************************************

*/



void  Task1 (void *pdata)

{

    char  *msg;

    INT8U  err;





    pdata = pdata;

    for (;;) {

        msg = (char *)OSQPend(MsgQueue, 0, &err);

        PC_DispStr(70, 13, msg, DISP_FGND_YELLOW + DISP_BGND_BLUE);

        OSTimeDlyHMSM(0, 0, 0, 100);

    }

}



/*

*********************************************************************************************************

*                                               TASK #2

*********************************************************************************************************

*/



void  Task2 (void *pdata)

{

    char  msg[20];





    pdata = pdata;

    strcpy(&msg[0], "Task 2");

    for (;;) {

        OSQPost(MsgQueue, (void *)&msg[0]);

        OSTimeDlyHMSM(0, 0, 0, 500);

    }

}

/*$PAGE*/

/*

*********************************************************************************************************

*                                               TASK #3

*********************************************************************************************************

*/



void  Task3 (void *pdata)

{

    char  msg[20];





    pdata = pdata;

    strcpy(&msg[0], "Task 3");

    for (;;) {

        OSQPost(MsgQueue, (void *)&msg[0]);

        OSTimeDlyHMSM(0, 0, 0, 500);

    }

}



/*

*********************************************************************************************************

*                                               TASK #4

*********************************************************************************************************

*/



void  Task4 (void *pdata)

{

    char  msg[20];





    pdata = pdata;

    strcpy(&msg[0], "Task 4");

    for (;;) {

        OSQPost(MsgQueue, (void *)&msg[0]);

        OSTimeDlyHMSM(0, 0, 0, 500);

    }

}

/*$PAGE*/

/*

*********************************************************************************************************

*                                               TASK #5

*********************************************************************************************************

*/



void  Task5 (void *pdata)

{

    pdata = pdata;

    for (;;) {

        OSTimeDlyHMSM(0, 0, 0, 100);

    }

}



/*

*********************************************************************************************************

*                                               CLOCK TASK

*********************************************************************************************************

*/



void  TaskClk (void *pdata)

{

    char  s[40];





    pdata = pdata;

    for (;;) {

        PC_GetDateTime(s);

        PC_DispStr(60, 23, s, DISP_FGND_YELLOW + DISP_BGND_BLUE);

        OSTimeDlyHMSM(0, 0, 0, 500);

    }

}



/*$PAGE*/

/*

*********************************************************************************************************

*                                      DISPLAY TASK RELATED STATISTICS

*********************************************************************************************************

*/



void  DispTaskStat (INT8U id)

{

    char  s[80];





    sprintf(s, "%-18s %05u      %5u          %10ld",

            TaskUserData[id].TaskName,

            TaskUserData[id].TaskCtr,

            TaskUserData[id].TaskExecTime,

            TaskUserData[id].TaskTotExecTime);

    PC_DispStr(0, id + 11, s, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

}



/*

*********************************************************************************************************

*                                       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;





    total = 0L;                                          /* Totalize TOT. EXEC. TIME for each task */

    for (i = 0; i < 7; i++) {

        total += TaskUserData[i].TaskTotExecTime;

        DispTaskStat(i);                                 /* Display task data                      */

    }

    if (total > 0) {

        for (i = 0; i < 7; i++) {                        /* Derive percentage of each task         */

            pct = 100 * TaskUserData[i].TaskTotExecTime / total;

            sprintf(s, "%3d %%", pct);

            PC_DispStr(62, i + 11, s, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

        }

    }

    if (total > 1000000000L) {                           /* Reset total time counters at 1 billion */

        for (i = 0; i < 7; i++) {

            TaskUserData[i].TaskTotExecTime = 0L;

        }

    }

}



/*

*********************************************************************************************************

*                                           TASK SWITCH HOOK

*********************************************************************************************************

*/

void  OSTaskSwHook (void)

{

    INT16U           time;

    TASK_USER_DATA  *puser;





    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 + -