📄 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 "lcd.h"
#include "wait.h"
#include "keybd.h"
#include "menu.h"
#include "horse_run.h"
#include "beep_run.h"
#include "num_run.h"
#include "oscillograph.h"
#include "ad.h"
#include "dac.h"
/* ********************************************************************* */
/* Global definitions */
/* ********************************************************************* */
/* File local definitions */
#define TASK_STK_SIZE 256 /* Size of each task's stacks (# of WORDs) */
#define NO_TASKS 1 /* 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;
extern unsigned int sine[120];
/* ********************************************************************* */
/* Local functions */
void Task1(void *data)
{
char key = 0;
init_lcd();
generate_sine(2.5,3000);
while ( 1 ) {
/* display start menu */
start_menu();
key = keyscan();
switch ( key ) {
case '1':
{
horse_run();
break;
} /* case '1' */
case '2':
{
num_run();
break;
} /* case '2' */
case '3':
{
beep_run();
break;
} /* case '3' */
case '4':
{
int i,j,currx,curry;
int currybak[70] = {0};
unsigned short adval,tmp;
j = 0;
i = 0;
currx = 0;
clear_lcd();
while ( 1 ) {
write_db(sine[j],DAC1);
if(++j == 40)
j = 0;
write_w(0x0,CHN1ADD);
while((read_b(CPLDSTAT) & ADINT));
adval = read_db(DATAOLE);
adval = read_db(DATAOEN);
if(currx==70){
currx = 0;
clear_wave(currybak);
}
tmp = adval & 0xf00;
curry = tmp >> 8;
currybak[i] = curry;
plot_adw(currx,curry);
if(++i == 70)
i = 0;
currx++;
/* wait for a while here */
wait(100);
key = keyscan();
if ( key != 'x' ) break;
} /* while (1) : inner */
break;
}
}/* switch ( key ) */
}
}
void TaskStart (void *data)
{
U8 i;
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("EXAMPLE #1\n");
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);
while(1)
{
CONSOL_Printf("\n# Parameter1: No. Tasks %d\n", OSTaskCtr); /* Display #tasks running */
CONSOL_Printf("# Parameter2: CPU Usage in %% %d %\n",OSCPUUsage); /* Display CPU usage in % */
i = CONSOL_Readc( );
if (1 == i)
{
CONSOL_Printf( "uc/os is quit!");
return;
}
//OSCtxSwCtr = 0;
//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], 0);
//FRMWRK_vStartTicker(OS_TICKS_PER_SEC); /* os_cfg.h */
OSStart(); /* Start multitasking */
}
/* ********************************************************************* */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -