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