⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex1.c

📁 ucosii的源代码希望能给予学习嵌入式系统的朋友一定的帮助
💻 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 + -