📄 test.c
字号:
PC_DispStr( 0, 10, "----------------- ------- ------------- ----------------- ----- ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
PC_DispStr( 0, 11, " ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
PC_DispStr( 0, 12, " ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
PC_DispStr( 0, 13, " ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
PC_DispStr( 0, 14, " ", DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
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);
/* 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);
#ifdef __WIN32__
sprintf(s, "uCOS-II V%1d.%02d WIN32 V%1d.%02d", OSVersion() / 100, OSVersion() % 100, OSPortVersion() / 100, OSPortVersion() % 100); /* Display uC/OS-II's version number */
#endif
#ifdef __LINUX__
sprintf(s, "uCOS-II V%1d.%02d LINUX V%1d.%02d", OSVersion() / 100, OSVersion() % 100, OSPortVersion() / 100, OSPortVersion() % 100); /* Display uC/OS-II's version number */
#endif
PC_DispStr(52, 23, s, DISP_FGND_YELLOW + DISP_BGND_BLUE);
}
/*$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(58, 22, 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, (INT8U) (id + 11), s, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
}
/*
*********************************************************************************************************
* 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 = (INT8U) (100 * TaskUserData[i].TaskTotExecTime / total);
sprintf(s, "%3d %%", pct);
PC_DispStr(62, (INT8U) (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)
{
INT32U time;
TASK_USER_DATA *puser;
time = PC_ElapsedStop(0); /* This task is done */
PC_ElapsedStart(0); /* Start for next task */
puser = OSTCBCur->OSTCBExtPtr; /* Point to used data */
if (puser != (TASK_USER_DATA *)0) {
puser->TaskCtr++; /* Increment task counter */
puser->TaskExecTime = (INT16U) time; /* Update the task's execution time */
puser->TaskTotExecTime += time; /* Update the task's total execution time */
}
}
/*
*********************************************************************************************************
* DUMMY HOOKS
*********************************************************************************************************
*/
void OSInitHookEnd()
{
}
void OSTimeTickHook()
{
}
void OSTaskCreateHook(OS_TCB *ptcb)
{
}
void OSTaskDelHook(OS_TCB *pTcb)
{
}
void OSTaskIdleHook()
{ OS_SLEEP();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -