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

📄 readdt.c

📁 ucosii的源代码希望能给予学习嵌入式系统的朋友一定的帮助
💻 C
字号:
/* 庆歹拳老 */
#include     "..\\includes.h"
#include	  "..\\drivers\\lcd.h"
#include     "..\\drivers\\CommRtos.h"

/* 惑荐 */
#define		TASK_STK_SIZE				100	/* Task狼 胶琶 荤捞令 */
#define		ADDTASK_COUNT				10		/* ADD TASK狼 荐 */
#define		ADDTASK_START_PRIO	10		/* ADD TASK狼 PRIO狼 矫累蔼 */


/* Data 历厘侩 备炼眉 */
typedef struct st_NumRange
{                  
    INT8U	Start;
	INT8U	End;
	INT8U	Prio;
} stNumRange;


/* 傈开函荐 */
OS_STK			TaskStartStk[TASK_STK_SIZE],								/* 矫累 Task狼 胶琶 */
						AddTaskStk[ADDTASK_COUNT][TASK_STK_SIZE]; /* Add Task狼 荐父怒 硅凯阑 捞瞒盔 硅凯肺 积己 */

stNumRange	TaskData[ADDTASK_COUNT];									/* Add Task肺 傈崔登绰 颇扼固磐侩 备炼眉 硅凯 */

INT16U				AddTotalSum;																	/* 阿阿狼 Add Task甸捞 歹茄 蔼阑 穿利且 函荐 */

INT8U				EndTaskCount;																		/* EndTaskCount蔼捞 ADD Task狼 荐客 鞍栏搁 辆丰 */


/* 窃荐 */
void	TaskStart(void * aData);
void	AddTask(void * aData);
void PrintScr(char * aData);

/* Extern 窃荐 */
extern void	TimeTickInit(void);
extern INT8U OSTaskSuspend(INT8U prio);
/*extern void PrintScr(char * aData);*/
/*
void PrintScr(char * aData)
{
	while(*aData)
        CommPutChar(*aData++, 0);
}*/

/* 家胶 */
void main (void)
{
	OSInit();																														/* uC/OS-II甫 檬扁拳茄促    */
	OSTaskCreate(TaskStart, (void *)0, (void *)&TaskStartStk[TASK_STK_SIZE - 1], ADDTASK_COUNT+ADDTASK_START_PRIO);	/* 弥檬 怕胶农 积己 */
	OSStart();																														/* uC/OS-II 扁悼            */
}

/* Task 矫累窃荐 */
void TaskStart(void * aData)
{
    BYTE	i,
				ErrNum=0;
    char		DispBuff[30];

    disable();						/* 牢磐反飘 厚劝己拳        */  
    TimeTickInit();				/* 鸥烙 平侩 鸥捞赣 檬扁拳  */
    enable();						/* 牢磐反飘 劝己拳          */

    CommInit();					/* Comm 檬扁拳 */

	/* 傈开函荐 檬扁拳 */
	AddTotalSum=0;
	EndTaskCount=0;

	/* Task Data 历厘 棺 AddTask 积己 */
	for(i=0;i<ADDTASK_COUNT;i++)
	{
			/* Add且 Range客 阿 Task狼 ID甫 历厘茄促. */
			TaskData[i].Start=i*10+1;
			TaskData[i].End=TaskData[i].Start+9;
			TaskData[i].Prio=ADDTASK_START_PRIO+i;

			/* AddTask甫 积己茄促. */
			ErrNum += OSTaskCreate(	AddTask, (void *)&TaskData[i], 
														(void *)&AddTaskStk[i][TASK_STK_SIZE - 1], 
														TaskData[i].Prio);
	}
	
	/* 俊矾啊 惯积矫 辆丰 窍哥, 俊矾啊 惯积窍瘤 臼栏搁, 葛电 AddTask啊 辆丰且锭鳖瘤 措扁 */
    if(ErrNum)			
    {
		sprintf(DispBuff, "Error : OSTaskCreate");
		PrintScr(DispBuff);
    }
	else					
	{
		/* 券康 巩备 */
		sprintf(DispBuff, "#################################\r\n");
		PrintScr(DispBuff);
		sprintf(DispBuff, "#   Welcome to AddTask Program  #\r\n");
		PrintScr(DispBuff);
		sprintf(DispBuff, "#         Kwangwoon Univ.       #\r\n");
		PrintScr(DispBuff);
		sprintf(DispBuff, "#################################\r\n\n");
		PrintScr(DispBuff);
		/* 1檬付促 EndTaskCount甫 眉农窍咯 葛电 AddTask啊 辆丰 登菌促搁 矫累 Task档 辆丰 茄促. */
		for(;EndTaskCount<ADDTASK_COUNT;)
			OSTimeDlyHMSM(0,0,1,0); /* 泅犁 抛胶农甫 瘤楷窍咯 窍困狼 Prio甫 啊柳 Task啊 角青登霸 茄促. */

		/* AddTask啊 葛滴 辆丰 登菌栏骨肺 搬苞甫 免仿窍绊 辆丰 茄促. */
		sprintf(DispBuff, "\r\n####  Total Sum : %8d  ####\r\n", AddTotalSum);
		PrintScr(DispBuff);
	}
}

/* 涝仿罐篮 裹困甫 1究 刘啊矫虐哥 歹窍绰 AddTask 窃荐 */
void AddTask(void * aData)
{
    stNumRange	* Range;
	char					DispBuff[30];
	BYTE				i=0;
	INT16U				AddSum=0;

	Range=(stNumRange *) aData;

	sprintf(DispBuff, "Task ID : %3d", Range->Prio);
	PrintScr(DispBuff);

	sprintf(DispBuff, "  From : %3d  To : %3d", Range->Start, Range->End); 
	PrintScr(DispBuff);

	for (;;) 
	{
		if(i==0)
		{
			for(i=Range->Start;i<=Range->End;i++)
				AddSum+=i;

			sprintf(DispBuff, "  Local Sum : %5d\r\n", AddSum);
			PrintScr(DispBuff);

			AddTotalSum+=AddSum;
			EndTaskCount++;
		}

		OSTaskSuspend(Range->Prio) ;
	}
}

void PrintScr(char * aData)
{
	while(*aData)
        CommPutChar(*aData++, 0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -