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

📄 main.c

📁 arm9 嵌入式系统开发与实践光盘
💻 C
字号:
/****************************************************************************
【文  件  名  称】main.c
【功  能  描  述】三星S3C44B0X板 uC/OS-II 程序代码
【程  序  版  本】1.0
【创建人及创建日期】icesoar//2003-12-19 10:57
【修改人及修改日期】icesoar//2004-6-6 23:27
****************************************************************************/
#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   5 

OS_STK Task1_Stack[TASK_STACK_SIZE];
void Task1( void *Id ) ;
#define Task1_PRIO       6

OS_STK  Task2_Stack[TASK_STACK_SIZE];
void Task2( void *Id ) ;
#define Task2_PRIO       7



OS_EVENT *UART0_SEM ;		   //UART 0信号量
OS_EVENT *Key_Mbox ;		   //按键消息邮箱
OS_EVENT *OK_Mbox;		      //按键消息邮箱

/******************************************************************************
【功能说明】主任务,在本任务中启动系统定时器并创建其他任务
******************************************************************************/
void rtc_tick_init( char tick )
{
    rRTCCON  = 0x01;	
    
    rTICNT  = (tick&0x7f)|0x80;		/*TICK 中断使能,周期为(1+tick)/128秒*/
   // tick=rTICNT;
	//printf("TICNT=%d/n",tick);
    rRTCCON  = 0x00;
}
/*
********************************************************************************************************
* 函数: void __irq OS_TICK_ISR (void).
* 描述: 1. Timer4 中断服务程序, 提供 uC/OS 节拍.
*       2. 其它 IRQ 中断服务函数请参照该函数.
********************************************************************************************************
*/
void  __irq OS_TICK_ISR (void)
{
    OSIntEnter();

    OSTimeTick();                                   /* 系统节拍服务程序.    */

    OSIntExit();

    ClearPending (BIT_TICK);                      // 清中断悬挂位.
}

void __irq rtc_irq(void)
{
	ClearPending(BIT_TICK);
	printf("into tick\n");
}


void Main_Task( void *Id )
{
	//U8 err ;
	
	//ARMStartTimer();
	EnableInt();
	rINTMOD = 0x0 ;	
	rtc_tick_init(50);
	//Init_Timer4();
	pISR_TICK= (unsigned)OSTickISR;
	//pISR_TICK= (unsigned)rtc_irq;
	ClearPending(BIT_TICK); 
	EnableIrq(BIT_TICK);
	
	printf("OSStatInit\n");
	OSStatInit();
	printf("into Main_Task \n");
	
	//OSTaskCreate( Task_KeyScan, (void *)0, (OS_STK *)&Task_KeyScan_Stack[TASK_STACK_SIZE-1], Task_KeyScan_PRIO ) ;
	//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 ) ;
	for( ; ; )	
	{
		
		printf( "++++++++++++++++++++++++++++++++++++++" ) ;
		printf( "OSCPUUsage = %d%% \n", OSCPUUsage ) ;
		OSTimeDly(10);
		
	}
}

/******************************************************************************
【功能说明】通过串口向超级终端发送数据
******************************************************************************/
void Task1(void *Id)
{
  for(;;)
   {
     printf("##############run Task1!!!################\n");
     OSTimeDly(5);
   }
}

/******************************************************************************
【功能说明】任务2,通过串口向超级终端发送数据
******************************************************************************/
void Task2(void *Id)
{
  for(;;)
   {
     printf("**************run Task2!!!****************\n");
     OSTimeDly(5);
    }
 }


/******************************************************************************
【功能说明】系统主函数
******************************************************************************/
void Main(void)
{
	U16 ver ;
	
	//BoardInitStart();
	SystemClockInit();
	TimerInit(TIMER_FREQ);
	MemCfgInit();
	PortInit();

	SerialSwitch(0);
	SerialChgBaud(115200);
	
	printf("\n\nTarget Initing\n");

	
	OSInit();		//uCOS-II初始化
	printf("OS Initing\n");

	//OSTimeSet(0);
   	printf("OS Time setting\n");
 
    ver = OSVersion();
    printf("OS Version: %d\n",ver);
  


	OSTaskCreate( Main_Task, (void *)0, (OS_STK *)&Main_Task_Stack[TASK_STACK_SIZE-1], Main_Task_PRIO ) ;
	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 ) ;
        
   // ARMTargetInit();    
	//ARMTargetStart();		//start the ARM target running
	//EnableIrq(BIT_TIMER0);
    printf("OS Starting\n\n");

	OSStart();		//Start uCOS-II

    
}
//*****************************************************************************

⌨️ 快捷键说明

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