app.c

来自「把uCOS移植到三星的44B0的CPU上面」· C语言 代码 · 共 273 行

C
273
字号
/*
*********************************************************************************************************
*                                               uC/OS-II
*                                         The Real-Time Kernel
*
*                             (c) Copyright 1998-2004, Micrium, Weston, FL
*                                          All Rights Reserved
*
*
*                                            ARM Sample code
*
* File : APP.C
* By   : Jean J. Labrosse
*********************************************************************************************************
*/

#include <includes.h>

/*
*********************************************************************************************************
*                                                CONSTANTS
*********************************************************************************************************
*/

#define   TASK_STK_SIZE_Large     512
#define   TASK_STK_SIZE           256
#define   TASK_START_PRIO         5
#define   TASK1_PRIO              18
#define   TASK2_PRIO              20
#define   TASK3_PRIO	          40
#define   TASK4_PRIO	          41
#define   TASK5_PRIO	          12
#define   TASK6_PRIO	          22
#define   TASK7_PRIO	          10

/*
*********************************************************************************************************
*                                                VARIABLES
*********************************************************************************************************
*/

OS_STK        AppStartTaskStk[TASK_STK_SIZE];
OS_STK        Task1Stk[TASK_STK_SIZE];
OS_STK        Task2Stk[TASK_STK_SIZE_Large];
OS_STK        Task3Stk[TASK_STK_SIZE_Large];
OS_STK        Task4Stk[TASK_STK_SIZE];
OS_STK        Task5Stk[TASK_STK_SIZE];
OS_STK        Task6Stk[TASK_STK_SIZE];
OS_STK        Task7Stk[TASK_STK_SIZE];

/*
*********************************************************************************************************
*                                            FUNCTION PROTOTYPES
*********************************************************************************************************
*/

static  void  AppStartTask(void *p_arg);
static  void  Task1(void *p_arg);
static  void  Task2 (void *p_arg);
static  void  Task3(void *p_arg);
static  void  Task4(void *p_arg);
static  void  Task5(void *p_arg);
static  void  Task6(void *p_arg);
static  void  Task7(void *p_arg);

/*
*********************************************************************************************************
*                                                main()
*
* Description : This is the standard entry point for C code.  It is assumed that your code will call
*               main() once you have performed all necessary 68HC12 and C initialization.
* Arguments   : none
*********************************************************************************************************
*/

void  mainOLD (void)
{
    INT8U  err;

    BSP_IntDisAll();

    OSInit();                               /* Initialize "uC/OS-II, The Real-Time Kernel"             */

        OSTaskCreateExt(AppStartTask,
                    (void *)0,
                    (OS_STK *)&AppStartTaskStk[TASK_STK_SIZE-1],
                    TASK_START_PRIO,
                    TASK_START_PRIO,
                    (OS_STK *)&AppStartTaskStk[0],
                    TASK_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);

        OSTaskCreateExt(Task1,
                    (void *)0,
                    (OS_STK *)&Task1Stk[TASK_STK_SIZE-1],
                    TASK1_PRIO,
                    TASK1_PRIO,
                    (OS_STK *)&Task1Stk[0],
                    TASK_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);

	OSTaskCreateExt(Task2,
                    (void *)0,
                    (OS_STK *)&Task2Stk[TASK_STK_SIZE_Large-1],
                    TASK2_PRIO,
                    TASK2_PRIO,
                    (OS_STK *)&Task2Stk[0],
                    TASK_STK_SIZE_Large,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);

	OSTaskCreateExt(Task3,
                    (void *)0,
                    (OS_STK *)&Task3Stk[TASK_STK_SIZE_Large-1],
                    TASK3_PRIO,
                    TASK3_PRIO,
                    (OS_STK *)&Task3Stk[0],
                    TASK_STK_SIZE_Large,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
	OSTaskCreateExt(Task4,
                    (void *)0,
                    (OS_STK *)&Task4Stk[TASK_STK_SIZE-1],
                    TASK4_PRIO,
                    TASK4_PRIO,
                    (OS_STK *)&Task4Stk[0],
                    TASK_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
	OSTaskCreateExt(Task5,
                    (void *)0,
                    (OS_STK *)&Task5Stk[TASK_STK_SIZE-1],
                    TASK5_PRIO,
                    TASK5_PRIO,
                    (OS_STK *)&Task5Stk[0],
                    TASK_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
	OSTaskCreateExt(Task6,
                    (void *)0,
                    (OS_STK *)&Task6Stk[TASK_STK_SIZE-1],
                    TASK6_PRIO,
                    TASK6_PRIO,
                    (OS_STK *)&Task6Stk[0],
                    TASK_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
	OSTaskCreateExt(Task7,
                    (void *)0,
                    (OS_STK *)&Task7Stk[TASK_STK_SIZE-1],
                    TASK7_PRIO,
                    TASK7_PRIO,
                    (OS_STK *)&Task7Stk[0],
                    TASK_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);


#if OS_TASK_NAME_SIZE > 11
    OSTaskNameSet(TASK_START_PRIO, "Start Task", &err);
#endif

#if OS_TASK_NAME_SIZE > 14
    OSTaskNameSet(OS_IDLE_PRIO, "uC/OS-II Idle", &err);
#endif

#if (OS_TASK_NAME_SIZE > 14) && (OS_TASK_STAT_EN > 0)
    OSTaskNameSet(OS_STAT_PRIO, "uC/OS-II Stat", &err);
#endif

    OSStart();                              /* Start multitasking (i.e. give control to uC/OS-II)      */
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                          STARTUP TASK
*
* Description : This is an example of a startup task.  As mentioned in the book's text, you MUST
*               initialize the ticker only once multitasking has started.
* Arguments   : p_arg   is the argument passed to 'AppStartTask()' by 'OSTaskCreate()'.
* Notes       : 1) The first line of code is used to prevent a compiler warning because 'p_arg' is not
*                  used.  The compiler should not generate any code for this statement.
*               2) Interrupts are enabled once the task start because the I-bit of the CCR register was
*                  set to 0 by 'OSTaskCreate()'.
*********************************************************************************************************
*/

static  void  AppStartTask (void *p_arg)
{
unsigned char i;

   (void)p_arg;

    CPU_Init();                             /* Initialize processor specific blocks                    */
    BSP_Init();                             /* Initialize BSP functions                                */

#if OS_TASK_STAT_EN > 0
    OSStatInit();                           /* Determine CPU capacity                                  */
#endif
	
    while (TRUE) {                          /* Task body, always written as an infinite loop.          */
     
            for(i=0;i<100;i++)
            {
            LedOut(i,0); 
            OSTimeDlyHMSM(0, 0,0,100);
            }
    }
}


static  void  Task1 (void *p_arg)
{
while(TRUE)  {
    OSTimeDlyHMSM(0, 0,0,50);
    }
}

static  void  Task2 (void *p_arg)
{
while(TRUE)  {
    OSTimeDlyHMSM(0, 0,1,0);
	//OutPut(0,"Start 8-SEG Led Test!\n");
	OSTimeDlyHMSM(0, 0,1,0);
	//OutPut(0,"Finish 8-SEG Led Test!\n");
    }
}

static  void  Task3 (void *p_arg)
{
while(TRUE)  {
    OSTimeDlyHMSM(0, 0,1,0);
	//OutPut(1,"Start uart1 send Test!\n");
	OSTimeDlyHMSM(0, 0,1,0);
	//OutPut(1,"Finish uart1 send Test!\n");
    }
}



static  void  Task4 (void *p_arg)
{
while(TRUE)  {
    OSTimeDlyHMSM(0, 0,0,50);
    }
}


static  void  Task5(void *p_arg)
{
while(TRUE)  {
    OSTimeDlyHMSM(0, 0,0,50);
    }
}


static  void  Task6(void *p_arg)
{
while(TRUE)  {
    OSTimeDlyHMSM(0, 0,0,50);
    }
}

static  void  Task7(void *p_arg)
{
while(TRUE)  {
    OSTimeDlyHMSM(0, 0,0,50);
    }
}

⌨️ 快捷键说明

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