📄 rr.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 + -