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

📄 taskmain.c

📁 一个操作系统源代码 用于嵌入式设备 在Vc++环境下仿真 成功移植到多款处理器上
💻 C
字号:
/*******************************************************************************
 *
 *      file name : main.c
 *
 *	Copyright (C) SEIKO EPSON CORP. 2001
 *
 *	This file implement PDA CELLULAR SYSTEM TASK
 *
 *              Revision History
 *
 *              2001/05/23  Leon Zhong 	Start
 *				2001/10/9	Pessia		New taskmain()
 ********************************************************************************/
#include <string.h>
#include <hardware\drball\m68328.h>
#include <kernel\ros33\ros33.h>
#include <sys\systsk.h>
#include <sys\taskdsp.h>
#include <sys\sysusr.h>
#include <sys\lmalloc.h>
#include <sys\systmr.h>

DWORD sys_stk[ STACK_SIZE*4 ];
//DWORD tmr_stk[ STACK_SIZE ];
DWORD uart_stk[ STACK_SIZE*4 ];
DWORD at_stk[ STACK_SIZE*4 ];
DWORD idle_stk[ STACK_SIZE ];

extern BYTE	array_memory[Heapsize];

extern void AsixTaskInit( void );
extern void StartService( TASKDESCRIPTIONLIST *desplst );
extern void InitialLCD( void );
extern void InitROM( void );
extern void InitUart( void );
extern void Idle( void );
extern void SysDevTableInit( void );

extern void Systask( void );
//extern void timer_task( void );

extern TASKDESCRIPTIONLIST	TimerTskDespLst;
extern TASKDESCRIPTIONLIST	UartServerDespLst;
extern TASKDESCRIPTIONLIST	AtServerDespLst;
extern TASKDESCRIPTIONLIST	PhoneAlarmTskDespLst;
extern TASKDESCRIPTIONLIST	AppointAlarmTskDespLst;
extern TASKDESCRIPTIONLIST	SMSAlarmTskDespLst;
extern TASKDESCRIPTIONLIST	SysAlarmTskDespLst;
extern TASKDESCRIPTIONLIST	AudioSvrTskDespLst;

extern BYTE	SystemStart;

void idle_task( void )
{
	extern void idle_process( void );
	
   	int i = 0;

    while(1) {
   	#ifndef SIM_ON_PC
//		if( SystemStart )
//			idle_process();
//    	asm("halt");
   		i = i ?	 i-- : i++;
	#else
		Idle();
   	#endif
    }	
}

void  taskmain()
{
	unsigned long		i;

	memset( array_memory, 0xcc, Heapsize );
	
#if ENABLE_SYSMSG_STATISTIC
	memset( gSysMsgSta, 0, sizeof(SYSMSG_STAT) * MLBX_NUM );
#endif
#if ENABLE_SYSFLG_STATISTIC
	memset( gSysFlgSta, 0, sizeof(SYSFLG_STAT) * FLG_NUM );
#endif
#if ENABLE_SYSCALL_STATISTIC
	memset( gSyscallSta, 0, sizeof(SYSCALL_STAT) * 63 );
#endif
	
	sys_ini();

#ifndef SIM_ON_PC
	timer_ini();
	/* start running rtc */
	init_rtc();
	set_rtc(RTCIENR_SAM3);
	run_rtc();
#endif
	
	/* initial gloable arrays */
	SysTcbTableInit();

	// Initial LCD
	InitialLCD( );
	InitUart();

	/* Init table of device manage table */
	SysDevTableInit();
	InitROM();
	
	/* create system and service task */
	vcre_tsk( SYSTASK_ID, Systask, SYSTASK_PRI, (DWORD)&sys_stk[STACK_SIZE] );
    gSysTcbTbl[SYSTASK_ID-1].status = DORMANT;


	vcre_tsk( IDLETASK_ID, idle_task, IDLETASK_PRI, (DWORD)&idle_stk[STACK_SIZE] );
    gSysTcbTbl[IDLETASK_ID-1].status = DORMANT;
	
	
	/* create all application task and initial systcb table */
	AsixTaskInit();
		
 	sta_tsk(IDLETASK_ID, 0);    /* start idle task  */
 	gSysTcbTbl[IDLETASK_ID-1].status = RUNNING;
   	
    sta_tsk(SYSTASK_ID, 0);		/* start system task  */
    gSysTcbTbl[SYSTASK_ID-1].status = RUNNING;
    

	StartService( &SysAlarmTskDespLst );	// start system alarm service task
	StartService( &TimerTskDespLst );	// start timer task
	StartService( &UartServerDespLst );	// start uart service task
	StartService( &AudioSvrTskDespLst );	// start audio service task
	StartService( &AtServerDespLst );	// start AT service task
	//StartService( &PhoneAlarmTskDespLst );	// start phone alarm service task
	//StartService( &AppointAlarmTskDespLst );	// start phone alarm service task
	//StartService( &SMSAlarmTskDespLst );	// start sms alarm service task

    sys_sta();	
}

⌨️ 快捷键说明

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