📄 ex4.c
字号:
#include "..\\includes.h"
#include "..\\drivers\\lcd.h"
#include "..\\drivers\\CommTest.h"
/*#define OS_TIME_DELAY*/
#define TASK_STK_SIZE 100 /* Size of each task's stacks (# of WORDs) */
/********************************************************************************************/
/* GLOBAL VARIABLES */
/********************************************************************************************/
OS_STK TaskStartStk[TASK_STK_SIZE]; /* TaskStart()窃荐侩 胶琶康开 */
OS_STK process1Stk[TASK_STK_SIZE]; /* Task #1 task stack */
OS_STK process2Stk[TASK_STK_SIZE]; /* Task #2 task stack */
OS_STK process3Stk[TASK_STK_SIZE]; /* Task #3 task stack */
OS_STK process4Stk[TASK_STK_SIZE]; /* Task #4 task stack */
#ifdef OS_TIME_DELAY
#define TITLE_DELAY() OSTimeDly(60)
#define LOOP_DELAY() OSTimeDly(1)
#else
#define TITLE_DELAY() delay(1000)
#define LOOP_DELAY() delay(10)
#endif
void TaskStart(void *pdat);
void process1(void *pdat);
void process2(void *pdat);
void process3(void *pdat);
void process4(void *pdat);
/********************************************************************************************/
/* EXTERNAL FUNCTION PROTOCOLS */
/********************************************************************************************/
extern void TimeTickInit(void);
void main (void)
{
OSInit(); /* uC/OS-II甫 檬扁拳茄促 */
/* 弥檬 怕胶农 积己 */
OSTaskCreate(TaskStart, (void *)0, (void *)&TaskStartStk[TASK_STK_SIZE - 1], 10);
OSStart(); /* uC/OS-II 扁悼 */
}
void TaskStart(void *pdat)
{
BYTE cnt, err, sData, sentCnt;
char dispBuf[20];
WORD dataCnt;
disable(); /* 牢磐反飘 厚劝己拳 */
TimeTickInit(); /* 鸥烙 平侩 鸥捞赣 檬扁拳 */
enable(); /* 牢磐反飘 劝己拳 */
CommInit(); /* Initialize Serial module */
DispInit(2,16); /* LCD靛扼捞滚甫 2*16 侩栏肺 檬扁拳茄促 */
err = 0;
err += OSTaskCreate(process1, (void *)0, &process1Stk[TASK_STK_SIZE-1], 11);
err += OSTaskCreate(process2, (void *)0, &process2Stk[TASK_STK_SIZE-1], 12);
err += OSTaskCreate(process3, (void *)0, &process3Stk[TASK_STK_SIZE-1], 13);
err += OSTaskCreate(process4, (void *)0, &process4Stk[TASK_STK_SIZE-1], 14);
for(;;)
{
OSTimeDlyHMSM(10,0,0,0);
}
}
void delay(WORD cnt)
{
volatile WORD i;
while(cnt--)
{
for(i=0;i<300;i++);
}
}
void process1(void *pdat)
{
BYTE err;
WORD cnt;
char disp[10];
for(;;)
{
OSSemPend(P1Sem, 0, &err);
DispStr(0,0,"P1 start");
TITLE_DELAY();
cnt = 0xff;
while(cnt--)
{
sprintf(disp," %5d", cnt);
DispStr(0,0,disp);
LOOP_DELAY();
}
DispStr(0,0,"P1 ends ");
TITLE_DELAY();
DispStr(0,0," ");
}
}
void process2(void *pdat)
{
BYTE err;
WORD cnt;
char disp[10];
for(;;)
{
OSSemPend(P2Sem, 0, &err);
DispStr(0,8,"P2 start");
TITLE_DELAY();
cnt = 0xff;
while(cnt--)
{
sprintf(disp," %5d", cnt);
DispStr(0,8,disp);
LOOP_DELAY();
}
DispStr(0,8,"P2 ends ");
TITLE_DELAY();
DispStr(0,8," ");
}
}
void process3(void *pdat)
{
BYTE err;
WORD cnt;
char disp[10];
for(;;)
{
OSSemPend(P3Sem, 0, &err);
DispStr(1,0,"P3 start");
TITLE_DELAY();
cnt = 0xff;
while(cnt--)
{
sprintf(disp," %5d", cnt);
DispStr(1,0,disp);
LOOP_DELAY();
}
DispStr(1,0,"P3 ends ");
TITLE_DELAY();
DispStr(1,0," ");
}
}
void process4(void *pdat)
{
BYTE err;
WORD cnt;
char disp[10];
for(;;)
{
OSSemPend(P4Sem, 0, &err);
DispStr(1,8,"P4 start");
TITLE_DELAY();
cnt = 0xff;
while(cnt--)
{
sprintf(disp," %5d", cnt);
DispStr(1,8,disp);
LOOP_DELAY();
}
DispStr(1,8,"P4 ends ");
TITLE_DELAY();
DispStr(1,8," ");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -