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

📄 main.c

📁 豪华板中E35G23的UCOS2+UcGUI图形系统2.76
💻 C
字号:
/*
 * File:        main.c
 *
 * uC/OS Real-time multitasking kernel for the ARM processor.
 *
 *
 * Created by hgxxx
 *
 */
#
#include	"../ucos_ii/ucos_ii.h"               /* uC/OS interface */
#include	"../inc/44blib.h"
#include	"../inc/44b.h"
#include	"../inc/option.h"
#include	"../inc/target.h"

#include    "../GUI/CORE/GUI.H"
#include     <stdlib.h>

/* allocate memory for tasks' stacks */
#ifdef SEMIHOSTED
#define STACKSIZE       (SEMIHOSTED_STACK_NEEDS+64)
#else
#define	STACKSIZE_H  8192
#define STACKSIZE_L  512
#endif

OS_STK Stack0[STACKSIZE_L];
OS_STK Stack1[STACKSIZE_L];
OS_STK Stack2[STACKSIZE_L];
OS_STK Stack3[STACKSIZE_L];
OS_STK Stack4[STACKSIZE_L];


OS_EVENT *UartSem;
OS_EVENT *KeySem;
/*-----------------------------------------------------------------------------------*/

void TaskLED(void *i)
{
    for (;;)
    {
		rPDATE=rPDATE&0x17f;
		OSTimeDly(500);
		rPDATE=rPDATE|0x80;
		OSTimeDly(500);
    }
}


void TaskKey(void *i)
{
	INT8U err;
	void *msg;
	
	for (;;)
	{
		msg = OSMboxPend(KeySem, 0, &err);
		OSSemPend(UartSem, 0, &err);
		Uart_Printf("msg = %d\n", msg);
		OSSemPost(UartSem);
	}
}
INT8U random(INT8U range)
{
	int temp;
	temp = rand();
	temp = temp%range;
	return((INT8U)temp);
}

void TaskLcd(void *i)
{

	INT8U x,y;

	for(;;)
	{
		OSTimeDly(20);
		x=random(30)*8;
		y=random(15)*12+80;
		GUI_GotoXY(x,y);
		GUI_ClearRect(x, y, x+7, y+12);//清除
		y=random(10);
		GUI_DispDec(y,1);
	}
}

void TaskTime(void *i)
{
	INT8U err;	
	
	for(;;)
	{
		OSTimeDly(2000);
		OSSemPend(UartSem, 0, &err);		
		Uart_Printf("TaskTime running\n");
		OSSemPost(UartSem);
	}
}



void TaskStart(void *i)
{
	INT8U err;
	
	ARMStartTimer();
	OSStatInit();
	
	for(;;)
	{
		OSTimeDly(1800);
		OSSemPend(UartSem, 0, &err);
		//Uart_Printf("++++++++++++++++++++++++++++++++++++++ ");
		Uart_Printf("OSCPUUsage = %d%% \n",OSCPUUsage);
		OSSemPost(UartSem);
	}
}

/*
 * Main function.
 */
void Main(void)
{
int ver; 
	char Id0 = '1';
	char Id1 = '2';
	char Id2 = '3';
        char Id3 = '4';
	char Id4 = '5';

	ARMTargetInit();
	Uart_Printf("OS running\n");

	OSInit();
        Uart_Printf("OS Initing\n");

	OSTimeSet(0);
        Uart_Printf("OS Time setting\n");
 
        ver=OSVersion();
        Uart_Printf("OS Version: %d\n",ver);
        Uart_Printf("OS Starting\n");
        
	UartSem = OSSemCreate(1);
	KeySem = OSMboxCreate((void *)0);
    /* 
     * create the tasks in uC/OS and assign decreasing
     * priority to them 
     */
	OSTaskCreate(TaskStart, (void *)&Id0, (void *)&Stack0[STACKSIZE_L - 1], 1);
	OSTaskCreate(TaskLED, (void *)&Id1, (void *)&Stack1[STACKSIZE_L - 1], 51);
	OSTaskCreate(TaskKey, (void *)&Id2, (void *)&Stack2[STACKSIZE_L - 1], 50);
    OSTaskCreate(TaskLcd, (void *)&Id3, (void *)&Stack3[STACKSIZE_L - 1], 40);
	OSTaskCreate(TaskTime,(void *)&Id4, (void *)&Stack4[STACKSIZE_L - 1], 36);
        
    /* Start the  system running */
	ARMTargetStart();
	srand(100);
	GUI_Init();
	
	GUI_SetColor(GUI_BLACK);
	GUI_SetBkColor(GUI_WHITE);
	GUI_Clear();
	GUI_SetFont(&GUI_Font8x16);
	GUI_GotoXY(0,8);
	GUI_DispString("uC/OS-II, The Real-Time Kernel");
	GUI_GotoXY(56,20);
	GUI_DispString("Jean J. Labrosse");
	GUI_GotoXY(72,32);
	GUI_DispString("EXAMPLE #1");
	GUI_SetColor(GUI_WHITE);
	GUI_SetBkColor(GUI_BLACK);
	
	/*************************************/
	
	
    /* start the system */

	OSStart();

    /* never reached */
}                               /* main */

⌨️ 快捷键说明

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