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

📄 rr.c

📁 ucos reference source
💻 C
字号:
/**************************************************************************
*                                                                         *
*   PROJECT     : ARM port for UCOS-II                                    *
*                                                                         *
*   MODULE      : RR.c                                                    *
*                                                                         *
*   AUTHOR      : Michael Anburaj                                         *
*                 URL  : http://geocities.com/michaelanburaj/             *
*                 EMAIL: michaelanburaj@hotmail.com                       *
*                                                                         *
*   CODE BY     : Anil Paranjpe, anil_paranjpe@yahoo.com                  *
*                                                                         *
*   PROCESSOR   : Any                                                     *
*                                                                         *
*   Tool-Chain  : Any                                                     *
*                                                                         *
*   DESCRIPTION :                                                         *
*   This is a sample code demonstrating Round robin scheduling in UCOS-II.*
*                                                                         *
**************************************************************************/


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


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


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

#define  TASK_STK_SIZE 256                      /* Size of each task's stacks (# of WORDs) */

static OS_STK    AppStartTaskStk[TASK_STK_SIZE];
static OS_STK    TaskStk1[TASK_STK_SIZE];
static OS_STK    TaskStk2[TASK_STK_SIZE];
static OS_STK    TaskStk3[TASK_STK_SIZE];

#define START_TASK_PRIO 0


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

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

Independently running tasks

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

void Task1(void *pdata)
{
    int i;
    pdata = pdata;
    for(;;)
    {
        CONSOL_SendChar('1');
        for(i=0;i<0xfff;i++);
    }
}

void Task2(void *pdata)
{
    int i;
    pdata = pdata;
    for(;;)
    {
        CONSOL_SendChar('2');
        for(i=0;i<0xfff;i++);
    }
}

void Task3(void *pdata)
{
    int i;
    pdata = pdata;
    for(;;)
    {
        CONSOL_SendChar('3');
        for(i=0;i<0xfff;i++);
    }
}


void AppStartTask (void *data)
{
	unsigned short time_t = 1;
	INT8U i;
    INT8U fixed_runtime=1;

    data = data;                            /* Prevent compiler warning */

    CONSOL_Printf("uC/OS-II, The Real-Time Kernel ARM Ported version\n");
    CONSOL_Printf("Jean J. Labrosse/ (Ported by) Michael Anburaj\n");
    CONSOL_Printf("RR #1\n");

//    FRMWRK_vStartTicker(OS_TICKS_PER_SEC);  /* The Tick timer is started much earlier */

    CONSOL_SendChar('\t');
    for (;;)
	{
        CONSOL_SendChar('0');
        for(i=2;i<5;i++)
		{
            OSTaskChangePrio(i,fixed_runtime);
            OSTimeDly(time_t);
            OSTaskChangePrio(fixed_runtime,i);
		}
	}
}


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

void APP_vMain (void)
{
    OSInit();                               /* Initialize uC/OS-II                                      */

    OSTaskCreate(AppStartTask, (void*)0, (void*)
				&AppStartTaskStk[TASK_STK_SIZE-1], START_TASK_PRIO);

    OSTaskCreate(Task1,(void*)0, (void *)&TaskStk1[TASK_STK_SIZE-1],2);
    OSTaskCreate(Task2,(void*)0, (void *)&TaskStk2[TASK_STK_SIZE-1],3);
    OSTaskCreate(Task3,(void*)0, (void *)&TaskStk3[TASK_STK_SIZE-1],4);

    FRMWRK_vStartTicker(OS_TICKS_PER_SEC);  /* os_cfg.h */
    OSStart();                              /* Start multitasking                                       */
}


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

⌨️ 快捷键说明

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