📄 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 "consol.h"
#include "beep.h"
#include "lcd.h"
#include "color.h"
#include "graphic.h"
#include "character.h"
/* ********************************************************************* */
/* Global definitions */
/* ********************************************************************* */
/* File local definitions */
#define TASK_STK_SIZE 256 /* Size of each task's stacks (# of WORDs) */
#define NO_TASKS 2 /* Number of identical tasks */
OS_STK Task1Stk[TASK_STK_SIZE]; /* Task #1 task stack */
OS_STK Task2Stk[TASK_STK_SIZE]; /* Task #2 task stack */
//OS_STK Task3Stk[TASK_STK_SIZE]; /* Task #3 task stack */
//OS_STK Task4Stk[TASK_STK_SIZE]; /* Task #4 task stack
//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)
{
int interval = 50;
while(1)
{
beep_on();
wait(interval);
beep_off();
OSTimeDly(100);
}
}
void Task2 (void *data)
{
data = data;
for (;;) {
clear_local_lcd(20,8,1);
display_string(20, 8, "|", GREEN);
OSTimeDly(200);
clear_local_lcd(20,8,1);
display_string(20, 8, "\\", GREEN);
OSTimeDly(200);
clear_local_lcd(20,8,1);
display_string(20, 8, "-", GREEN);
OSTimeDly(200);
clear_local_lcd(20,8,1);
display_string(20, 8, "/", GREEN);
OSTimeDly(200);
}
}
void TaskStart (void *data)
{
U8 i;
INT16U j,k;
char s[10];
char str0[] = "uC/OS-II, The Real-Time Kernel";
char str1[] = "sy and stam";
char str2[] = "EXAMPLE #1";
char str3[] = "Task ";
char str4[] = "------------- ";
char str5[] = "TaskStart():";
//char str6[] = "TaskClk() :";
char str7[] = "Task1() :";
char str10[] = "Task2() :";
char str8[] = "<-PRESS 'ANYKEY' TO QUIT->";
char str9[] = "#Tasks: CPU Usage: %";
//char str10[] = "#Task switch/sec: ";
data = data; /* Prevent compiler warning */
init_lcd();
display_string(5, 0, str0, GREEN);
display_string(15, 1, str1, GREEN);
display_string(15, 2, str2, GREEN);
display_string( 0, 3, str3, GREEN);
display_string( 0, 4, str4, GREEN);
display_string( 0, 5, str5, GREEN);
//display_string( 0, 6, str6, GREEN);
display_string( 0, 6, str7, GREEN);
display_string(0, 14, str8, GREEN);
display_string(0, 7, str10, GREEN);
FRMWRK_vStartTicker(OS_TICKS_PER_SEC); /* The Tick timer is started much earlier */
OSStatInit(); /* Initialize uC/OS-II's statistics */
for (i = 0; i < NO_TASKS; i++)
{ /* Create NO_TASKS identical tasks */
TaskData[i] = '0' + i; /* Each task will display its own letter */
//CONSOL_Printf("#%d",i);
//OSTaskCreate(Task1,&TaskData[i], &TaskStk[i][TASK_STK_SIZE - 1], i + 1);
}
OSTaskCreate(Task1,(void *)0, &Task1Stk[TASK_STK_SIZE - 1], 20);
OSTaskCreate(Task2,(void *)0, &Task2Stk[TASK_STK_SIZE - 1], 21);
display_string( 0, 10, str9, GREEN);
//display_string( 0, 9, str10, GREEN);
while(1)
{
OSCtxSwCtr = 0;
CONSOL_Printf("# Parameter2: CPU Usage in %% %d %\n",OSCPUUsage);
j = sprintf(s,"%d",OSCPUUsage);
clear_local_lcd(30,10,j);
display_string(30, 10, s, GREEN);
k = sprintf(s,"%d",OSTaskCtr);
clear_local_lcd(10,10,k);
display_string(10, 10, s, GREEN);
i = CONSOL_Readc( );
if (1 == i)
{
CONSOL_Printf( "uc/os is quit!");
beep_off();
return;
}
//OSTimeDly(32768);
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, 0, &TaskStartStk[TASK_STK_SIZE - 1], 12);
//FRMWRK_vStartTicker(OS_TICKS_PER_SEC); /* os_cfg.h */
OSStart(); /* Start multitasking */
}
/* ********************************************************************* */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -