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

📄 inter.c

📁 ucosii小实验任务五 时钟中断
💻 C
📖 第 1 页 / 共 2 页
字号:
	 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, 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*/
/*
*********************************************************************************************************
*                                             CREATE TASKS
*********************************************************************************************************
*/
static  void  TaskStartCreateTasks (void)
{
	 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);
	 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(Task3,
						 (void *)0,
						 &Task3Stk[TASK_STK_SIZE - 1],
						 TASK_3_PRIO,
						 TASK_3_ID,
						 &Task3Stk[0],
						 TASK_STK_SIZE,
						 (void *)0,
						 OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                                  TASKS
*********************************************************************************************************
*/

void  Task1 (void *pdata)
{
	 INT8U  err;
	 pdata=pdata;

	 for (;;)
	 {
		  OSTimeDly(100);                              /*task1 delay 100 clock ticks*/
		  OSSemPend(InterruptSem, 0, &err);           /* Acquire semaphore to get into the room */
		  OSTimeDly(200);
		  PC_DispStr(15, 11,"Task1 has Succeed to obtain semaphore" ,  DISP_FGND_YELLOW + DISP_BGND_BLUE);
		  OSTimeDly(100);
		  OSSemPost(InterruptSem);
		  OSTimeDly(200);
		  PC_DispStr(15, 11,"Task1 release semaphore              " ,  DISP_FGND_YELLOW + DISP_BGND_BLUE);
	 }
}

void Task2 (void *pdata)
{
	 INT8U err;

	 pdata=pdata;
	 for (;;)
	 {
		  OSSemPend(InterruptSem, 0, &err);           /* Acquire semaphore to get into the room */
		  OSTimeDly(500);                             /*task2 delay 500 clock ticks*/
		  PC_DispStr(15, 12, "Task2 has been waked up              ",  DISP_FGND_YELLOW + DISP_BGND_BLUE);
		  OSTimeDly(100);
		  OSSemPost(InterruptSem);
		  OSTimeDly(200);
		  PC_DispStr(15, 12, "Task2 is sleeping                    ",  DISP_FGND_YELLOW + DISP_BGND_BLUE);


	 }
}

void  Task3 (void *pdata)
{
	 pdata=pdata;
	 for (;;)
	 {
		  PC_DispStr(15, 13, "|||||||||||||||||||||||||||||||||||||",  DISP_FGND_YELLOW + DISP_BGND_BLUE);
		  OSTimeDly(50);
		  PC_DispStr(15, 13, "/////////////////////////////////////",  DISP_FGND_YELLOW + DISP_BGND_BLUE);
		  OSTimeDly(50);
		  PC_DispStr(15, 13, "-------------------------------------",  DISP_FGND_YELLOW + DISP_BGND_BLUE);
		  OSTimeDly(50);
		  PC_DispStr(15, 13, "\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",  DISP_FGND_YELLOW + DISP_BGND_BLUE);
		  OSTimeDly(50);
	 }
}
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);
    }
}


⌨️ 快捷键说明

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