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

📄 main.c

📁 完整ucos, 可以在s3c440x上行
💻 C
字号:

/****************************************************
公司:   三扬科技  SUNYUNGCO
日期:   2004年8月17日
****************************************************/

#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_EVENT *UartSem;
OS_EVENT *KeySem;
/*-----------------------------------------------------------------------------------*/

void TaskLED(void *i)
{
    for (;;)
    {

		/* ----------- LED Control -------------*/
		rPDATE=(rPDATE|0x0f0)&0x1ef;                //GPE4=0  LED1  TOUT1          1110
        OSTimeDly(200);
          
        rPDATE=(rPDATE|0x0f0)&0x1df;                //GPE5=0  LED2  TOUT2          1101
        OSTimeDly(200); 
          
        rPDATE=(rPDATE|0x0f0)&0x1bf;                //GPE6=0  LED3  TOUT3          1011
        OSTimeDly(200); 
            
        rPDATE=(rPDATE|0x0f0)&0x17f;                //GPE7=0  LED4  TOUT4          0111
        OSTimeDly(200);   
      
        rPDATE=(rPDATE|0x0f0)&0x1af;                //GPE4,6=0  LED1,3  TOUT1,3     1010
        OSTimeDly(200);
      
        rPDATE=(rPDATE|0x0f0)&0x15f;                //GPE5,7=0  LED2,4  TOUT2,4     0101
        OSTimeDly(200);
      
        rPDATE=rPDATE&0x10f;                        //GPE4-7=0  LED4-7  TOUT4-7     0000
        OSTimeDly(200); 
        /* ----------- LED Control -------------*/
        
        /* ----------- Buzzer Control -------------*/
        rPDATE=(rPDATE|0x0f8);                      //GPE3=1
        OSTimeDly(60);
      
        rPDATE=rPDATE&0x1f7;                        //GPE3=0
        OSTimeDly(60);
        /* ----------- LED Control -------------*/
    }
}


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 TaskUart(void *i)
{
	for (;;)
	{
		OSSemPend(UartSem, 0, &err);
		Uart_Printf("My FYP\n");
		OSSemPost(UartSem);
		OSTimeDly(2000);
	}
}

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

/*
 * Main function.
 */
void Main(void)
{

	char Id0 = '1';
	char Id1 = '2';
	char Id2 = '3';
	char Id3 = '4';

	ARMTargetInit();

	Uart_Printf("OSrunning\n");

	OSInit();

	OSTimeSet(0);
    
	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(TaskUart, (void *)&Id3, (void *)&Stack3[STACKSIZE_L - 1], 59);
        
    /* Start the  system running */
	ARMTargetStart();

    /* start the system */

	OSStart();

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

⌨️ 快捷键说明

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