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

📄 ex1.c

📁 瑞泰创新的GX-ARM9-2410EP教学实验系统UCOS移植源代码,包含GUI和多任务运行的UCOS操作系统
💻 C
字号:
/**************************************************************************
*                                                                         *
*   PROJECT     : ARM port for UCOS-II                                    *
*                                                                         *
*   MODULE      : EX1.c                                                   *
*                                                                         *
*   AUTHOR      : Michael Anburaj                                         *
*                 URL  : http://geocities.com/michaelanburaj/             *
*                 EMAIL: michaelanburaj@hotmail.com                       *
*                                                                         *
*   PROCESSOR   : Any processor                                           *
*                                                                         *
*   IDE         : Any IDE                                                 *
*                                                                         *
*   DESCRIPTION :                                                         *
*   This is a sample code to test UCOS-II.                                *
*                                                                         *
**************************************************************************/


#include "includes.h"
#include "guimaintask.h"
#include "consol.h"

#include "ledary.h"



/* ********************************************************************* */
/* Global definitions */


/* ********************************************************************* */
/* File local definitions */

#define  TASK_STK_SIZE 256                      /* Size of each task's stacks (# of WORDs) */
#define  NO_TASKS           10                   /* Number of identical tasks */

OS_STK   TaskStk[NO_TASKS][TASK_STK_SIZE];      /* Tasks stacks */
OS_STK   TaskStartStk[TASK_STK_SIZE];
char     TaskData[NO_TASKS];                    /* Parameters to pass to each task */
OS_EVENT *RandomSem;


/* ********************************************************************* */
/* Local functions */

void Task1 (void *data)
{
        U8 err;
		U8 i,j;
        data = data;                            /* Prevent compiler warning */
        
        
        while(1)
        {
				for (i=0; i<8; i++)
				{
					for (j=0; j<8; j++)
					{
						DispLedAryCol(0x01<<j,i);
		                CONSOL_Printf("Task1 ! Led row %d, col %d   ON   \n",i,j);    /* Display #tasks running */                OSTimeDly(5);                   /* Delay 5 clock tick */
		                OSTimeDly(1000);                   /* Delay 5 clock tick */                
					}		
				}	
        
        }
}

void Task2 (void *data)
{
        U8 err;

        data = data;                            /* Prevent compiler warning */
        //LED8_init();

        
		while (1)
		{
				//LED8_Test();        
	            CONSOL_Printf("Task2 ! ");    /* Display #tasks running */                OSTimeDly(5);                   /* Delay 5 clock tick */
                OSTimeDly(1000);                   /* Delay 5 clock tick */                
        }
}

void Task3 (void *data)
{
        U8 err;

        while(1)
        {

                CONSOL_Printf("Task3  GUI Task!  \n");    /* Display #tasks running */                OSTimeDly(5);                   /* Delay 5 clock tick */        		
				GUIMainTask();
                OSTimeDly(1000);                   /* Delay 5 clock tick */
        }
}


void TaskStart (void *data)
{
        U8 i;
        char key;

        data = data;                            /* Prevent compiler warning */

        CONSOL_Printf("uC/OS-II, The Real-Time Kernel ARM Ported version\n");
        CONSOL_Printf("Li Zhufeng/ (Ported by) Michael Anburaj\n");
        CONSOL_Printf("Task1 #1\n");

        OSStatInit();                           /* Initialize uC/OS-II's statistics */

        TaskData[0] = '1' ;             /* Each task will display its own letter */
        TaskData[1] = '2' ;             /* Each task will display its own letter */                
        OSTaskCreate(Task1, (void *)0, (void *)&TaskStk[0][TASK_STK_SIZE - 1], 1);
        OSTaskCreate(Task2, (void *)0, (void *)&TaskStk[1][TASK_STK_SIZE - 1], 2);                
        OSTaskCreate(Task3, (void *)0, (void *)&TaskStk[2][TASK_STK_SIZE - 1], 3);                        



        CONSOL_Printf("<-PRESS 'ESC' TO QUIT->\n");
        while(1)
        {
                CONSOL_Printf(" %d", OSTaskCtr);    /* Display #tasks running */
                CONSOL_Printf(" %d", OSCPUUsage);   /* Display CPU usage in % */
                CONSOL_Printf(" %d\n", OSCtxSwCtr); /* Display #context switches per second */
                OSCtxSwCtr = 0;
            
                if(CONSOL_GetChar(&key) == True)
                {                               /* See if key has been pressed */         
                        if(key == 0x1B)         /* Yes, see if it's the ESCAPE key */
                                while(1);       /* Stay here for ever */
                }

                OSTimeDlyHMSM(0, 0, 1, 0);      /* Wait one second */
        }
}


/* ********************************************************************* */
/* Global functions */

void APP_vMain (void)
{
        OSInit();                               /* Initialize uC/OS-II                                      */
        RandomSem = OSSemCreate(1);             /* Random number semaphore                              */
        OSTaskCreate(TaskStart, (void *)0, (void *)&TaskStartStk[TASK_STK_SIZE - 1], 0);
        FRMWRK_vStartTicker(OS_TICKS_PER_SEC);  /* os_cfg.h */
        OSStart();                              /* Start multitasking      
                                        */
}


/* ********************************************************************* */

⌨️ 快捷键说明

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