www.pudn.com > 44B0X_uCOS276.rar > Main.c


/**************************************************************************** 
【文  件  名  称】main.c 
【功  能  描  述】三星S3C44B0X板 uC/OS-II 程序代码 
【程  序  版  本】1.0 
【创建人及创建日期】龚俊//2003-12-19 10:57 
【修改人及修改日期】龚俊//2004-6-6 23:27 
****************************************************************************/ 
#include    "def.h" 
#include	"option.h" 
#include	"44blib.h" 
#include	"44b.h" 
 
#include    "rtc.h" 
 
#include    "os_cpu.h" 
#include	"ucos_ii.h"               /* uC/OS interface */ 
#include	"target.h" 
//*************************************************************************** 
/* allocate memory for tasks' stacks */ 
#ifdef SEMIHOSTED 
	#define STACKSIZE       (SEMIHOSTED_STACK_NEEDS+64) 
#else 
	//#define  TASK_STACK_SIZE	(  256+64 ) 
	#define  TASK_STACK_SIZE	(  512+64 ) 
	//#define  TASK_STACK_SIZE	( 8192+64 ) 
#endif 
 
//*************************************************************************** 
//OS_STK Main_Task_Stack[TASK_STACK_SIZE]; 
//void Main_Task( void *Id ) ; 
//#define Main_Task_PRIO       4 
 
OS_STK Task1_Stack[TASK_STACK_SIZE]; 
void Task1( void *Id ) ; 
#define Task1_PRIO       5 
 
OS_STK Task2_Stack[TASK_STACK_SIZE]; 
void Task2( void *Id ) ; 
#define Task2_PRIO       6 
 
OS_STK TestTaskStk[100]; 
 
void EINT0ISR(void) 
{ 
	Uart_Printf("EINT0! "); 
} 
//**************************************************************************** 
void Task1(void *Id) 
{ 
    ARMStartTimer(); 
//	OSStatInit(); 
 //   Uart_Printf("Task1() called\n"); 
 
    for (;;) 
    { 
//		OSSchedLock(); 
 
        Uart_Printf("task 1 turned"); 
 
//        OSSchedUnlock(); 
         
        OSTimeDly(10);        
    } 
} 
 
void Task2(void *Id) 
{ 
//    Uart_Printf("Task2() called\n"); 
 
    for (;;) 
    { 
//		OSSchedLock(); 
 
        Uart_Printf("task 2 turned"); 
 
//        OSSchedUnlock(); 
         
        OSTimeDly(10);        
    } 
} 
//***************************************************************************** 
 
/****************************************************************************** 
【功能说明】主任务,在本任务中启动系统定时器并创建其他任务 
******************************************************************************/ 
/* 
void Main_Task( void *Id ) 
{ 
	U8 err ; 
	 
	ARMStartTimer(); 
	OSStatInit(); 
 
	OSTaskCreate( Task1, (void *)0, (OS_STK *)&Task1_Stack[TASK_STACK_SIZE-1], Task1_PRIO ) ; 
	OSTaskCreate( Task2, (void *)0, (OS_STK *)&Task2_Stack[TASK_STACK_SIZE-1], Task1_PRIO ) ; 
	for( ; ; )	 
	{ 
		OSTimeDly(2000); 
		OSSemPend(UART0_SEM, 0, &err) ;		//挂起当前任务直至其他任务或中断置起信号量 
		Uart_Printf( "++++++++++++++++++++++++++++++++++++++" ) ; 
		Uart_Printf( "OSCPUUsage = %d%% \n", OSCPUUsage ) ; 
		OSSemPost(UART0_SEM) ;		//置起指定的信号量 
	} 
} 
*/ 
INT32U count1=0; 
void TestTask (void *pdata) 
{ 
	pdata=pdata; 
	 
	ARMTargetStart(); 
	ARMStartTimer(); 
	Led_Set(0x0f); 
	while(1) 
	{ 
		OSTimeDly(1); 
		count1++; 
//		if(count1>30000) Led_Set(0x0f); 
//		else Led_Set(0x0); 
		if(count1==60000) count1=0; 
	} 
} 
void Eint0Isr(void) 
{ 
	Uart_Printf("eint0"); 
	rI_ISPC= BIT_EINT0; 
} 
/****************************************************************************** 
【功能说明】系统主函数 
******************************************************************************/ 
void Main(void) 
{ 
	U16 ver ; 
/*	Uart_Init( 0, 115200 );			//设置串口0的速率为115200bps 
	Uart_Select(0);	 
	rINTCON=0x5;	  // Non-vectored,IRQ enable,FIQ disable      
    rINTMOD=0x0;	  // All=IRQ mode 
   	rPCONG=0x57ff;  //PortG[0~4] EINT MODE,PortG[5~7] OU 
    pISR_EINT0=(int)Eint0Isr;//设置外部0的中断向量 
    rEXTINTPND=0xf;		//clear EXTINTPND reg. 
    rI_ISPC= BIT_EINT0;	//clear pending_bit 
     
    rINTMSK=~(BIT_GLOBAL | BIT_EINT0);  //External interrupt0,1 check.. 
    while(1) 
    { 
    Uart_Printf("yes"); 
    Delay(10000); 
    } 
    Led_Set(0x0); 
    Led_Set(0x0f); 
    */ 
    ARMTargetInit(); 
  
//	Uart_Printf("\n\nTarget Initing\n"); 
 
	OSInit();		//uCOS-II初始化 
//	Uart_Printf("OS Initing\n"); 
 
	OSTimeSet(0); 
//    Uart_Printf("OS Time setting\n"); 
  
    ver = OSVersion(); 
    Uart_Printf("OS Version: %d\n",ver); 
     
    OSTaskCreate( Task1, (void *)0, (OS_STK *)&Task1_Stack[TASK_STACK_SIZE-1], Task1_PRIO ) ; 
	OSTaskCreate( Task2, (void *)0, (OS_STK *)&Task2_Stack[TASK_STACK_SIZE-1], Task2_PRIO ) ; 
//Led_Set(0x0); 
//     OSTaskCreate(TestTask,(void *)0,&TestTaskStk[99],0);  
			//start the ARM target running 
//    Uart_Printf("OS Starting\n\n"); 
 
ARMTargetStart(); 
	OSStart();		//Start uCOS-II 
 
    /* never reached */ 
} 
//*****************************************************************************