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

📄 main.c

📁 ucos2 系统是进入嵌入式系统开发的最基础的也是最入门的
💻 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"

/* 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);
	}
}

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

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();

    /* start the system */

	OSStart();

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

⌨️ 快捷键说明

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