📄 ex1.c
字号:
#include "..\\includes.h"
#include "..\\drivers\\lcd.h"
#include "..\\drivers\\CommRtos.h"
/********************************************************************************************/
/* 惑荐 急攫 */
/********************************************************************************************/
#define TASK_STK_SIZE 100 /* 阿 怕胶农狼 胶琶 农扁 (16厚飘 胶琶) */
#define N_TASKS 9 /* 鞍篮 内靛狼 怕胶农啊 荐青登绰 荐 */
#define KEY_ESC 0x1b
#define CHAR_TASK_DELAY 1
#define BAR_TASK_DELAY1 1
#define BAR_TASK_DELAY2 1
/********************************************************************************************/
/* 傈开 函荐 急攫 */
/********************************************************************************************/
OS_STK TaskStartStk[TASK_STK_SIZE]; /* TaskStart()窃荐侩 胶琶康开 */
OS_STK barTaskStk[TASK_STK_SIZE]; /* barTask()窃荐侩 胶琶康开 */
OS_STK commTaskStk[TASK_STK_SIZE]; /* barTask()窃荐侩 胶琶康开 */
OS_STK TaskStk[N_TASKS][TASK_STK_SIZE]; /* charTask()窃荐侩 胶琶康开 */
BYTE TaskData[N_TASKS]; /* charTask()肺 傈崔登绰 颇扼固磐侩 硅凯 */
/********************************************************************************************/
/* 窃荐 盔屈 */
/********************************************************************************************/
void TaskStart(void *data);
void charTask(void *data);
void barTask(void *data);
void commTask(void *data);
/********************************************************************************************/
/* 寇何 窃荐 盔屈 */
/********************************************************************************************/
extern void TimeTickInit(void);
void main (void)
{
OSInit(); /* uC/OS-II甫 檬扁拳茄促 */
/* 弥檬 怕胶农 积己 */
OSTaskCreate(TaskStart, (void *)0, (void *)&TaskStartStk[TASK_STK_SIZE - 1], 0);
OSStart(); /* uC/OS-II 扁悼 */
}
void TaskStart(void *pdat)
{
BYTE i, ret;
BYTE sData;
char * sPtr;
char dispBuf[30];
disable(); /* 牢磐反飘 厚劝己拳 */
TimeTickInit(); /* 鸥烙 平侩 鸥捞赣 檬扁拳 */
enable(); /* 牢磐反飘 劝己拳 */
CommInit();
DispInit(2,16); /* LCD 靛扼捞滚甫 2*16 侩栏肺 檬扁拳茄促 */
DispHorBarInit(); /* LCD狼 CG伐阑 橇肺弊伐茄促 */
DispStr(0,0," System init..");
DispStr(1,0," Please wait..");
OSStatInit();
DispClrScr();
ret = 0;
for(i=0;i<N_TASKS;i++) /* N_TASKS父怒 悼老 怕胶农甫 积己茄促 */
{
TaskData[i] = i; /* 阿 怕胶农啊 贸澜栏肺 钎矫且 单捞磐甫 逞败霖促 */
ret += OSTaskCreate(charTask, (void *)&TaskData[i], (void *)&TaskStk[i][TASK_STK_SIZE - 1], i+1);
}
ret += OSTaskCreate(barTask, (void *)0, (void *)&barTaskStk[TASK_STK_SIZE - 1], i+2);
ret += OSTaskCreate(commTask, (void *)0, (void *)&commTaskStk[TASK_STK_SIZE - 1], i+3);
if(ret)
{
/* ret 函荐俊 绢恫 蔼捞 乐栏搁 怕胶农 积己档吝 俊矾啊 惯积茄 巴烙 */
DispStr(1, 0,(char *)"Prio Err");
OSTimeDlyHMSM(0,0,5,0);
}
i = 0;
/* 怕胶农积己 烙公甫 肯丰沁栏骨肺 公茄风橇甫 馆汗茄促 */
while(1)
{
/* 1檬 埃拜栏肺 CPU 荤侩啦苞 巩钙傈券 雀荐甫 钎矫 */
OSTimeDlyHMSM(0,0,1,0); /* 1檬 瘤楷 */
sprintf(dispBuf,"%02d%%,%04d", OSCPUUsage, OSCtxSwCtr);
DispStr(1,0,dispBuf);
OS_ENTER_CRITICAL();
OSCtxSwCtr = 0;
OS_EXIT_CRITICAL();
sprintf(dispBuf, "This is first example : %03d\r", i++);
sPtr = dispBuf;
while(*sPtr)
{
ret = CommPutChar(*sPtr++, 0);
}
}
}
void charTask(void *pdat)
{
BYTE val, cnt;
val = *(BYTE *)pdat;
val %= 10;
val += '0';
for (;;)
{
/* timer1栏肺 何磐 臂磊甫 钎矫且 罚待茄 困摹甫 佬绢柯促 */
cnt = (BYTE)(timer1%16);
/* 鸥捞赣俊辑 佬篮 蔼阑 LCD谅钎肺 函券秦辑 1巩磊甫 叼胶敲饭捞茄促 */
DispChar(0, cnt, val);
/* 1 Time tick 悼救 措扁惑怕肺 甸绢埃促 */
/* 捞锭 促弗 撤篮 鉴困狼 怕胶农啊 角青俊 甸绢埃促 */
OSTimeDly(CHAR_TASK_DELAY);
}
}
void barTask(void *data)
{
BYTE i;
char str[5];
data = data;
i = 0;
for (;;) {
for(i=0;i<=30;i++)
{
/* 0何磐 30鳖瘤狼 蔼阑 捞侩秦辑 官弊贰橇甫 免仿茄促 */
DispHorBar(1,8,i);
sprintf(str,"%02d", i);
DispStr(1,14,str);
OSTimeDly(BAR_TASK_DELAY1);
}
OSTimeDly(BAR_TASK_DELAY2);
for(i=29;i>0;i--)
{
/* 29何磐 0鳖瘤狼 蔼阑 捞侩秦辑 官弊贰橇甫 免仿茄促 */
DispHorBar(1,8,i);
sprintf(str,"%02d", i);
DispStr(1,14,str);
OSTimeDly(BAR_TASK_DELAY1);
}
OSTimeDly(BAR_TASK_DELAY2);
}
}
void commTask(void *data)
{
INT16U cnt;
INT8U sData, err;
char dispBuf[30];
cnt = 0;
for(;;){
sData = CommGetChar(0, &err);
if(sData==KEY_ESC) asm rst;
sprintf(dispBuf,"%05u", cnt++);
DispStr(1,3,dispBuf);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -