www.pudn.com > LPC2200_USB.rar > SYS_LPC2200.C, change:2005-04-25,size:6905b


/****************************************Copyright (c)************************************************** 
**                               Guangzou ZLG-MCU Development Co.,LTD. 
**                                     graduate school 
**                                 http://www.zlgmcu.com 
** 
**--------------File Info------------------------------------------------------------------------------- 
** File Name: SYS_LPC2100.c 
** Last modified Date: 2005-04-22 
** Last Version:  
** Description:  
** 
**------------------------------------------------------------------------------------------------------ 
** Created By: Lishan Zhou 
** Created date: 2005-04-22 
** Version:  
** Description: 
** 
**------------------------------------------------------------------------------------------------------ 
** Modified by: 
** Modified date: 
** Version: 
** Description: 
** 
********************************************************************************************************/ 
 
#include  "config.h" 
 
/*******************************************************************************************************/ 
/*                                 MagicARM2200板ISP1161A1(HOST)与LCP2100硬件连接        											   */ 
/* D0~15  	 -- P2.0~P0.15(D0~D15)																				   */ 
/* INT1(OUT) -- P0.16(EINT0)																			   */ 
/* A0~1(IN)  -- P3.1~P3.2(A1-A2)																			   */ 
/* CS(IN)	 --	F16V8C译码,地址为0x83400000																						   */ 
/* WR(IN)    -- P3.27(WE)																					   */ 
/* RD(IN)    -- P1.1(OE)																					   */ 
/* RSET(OUT) -- P1.25																					   */ 
/* WU(IN)	 -- P1.22  																				   */ 
/* SUP(OUT)	 -- P1.21	    																			   */ 
/* 以下为使用GPIO控制ISP1160配置																	   */ 
/*******************************************************************************************************/ 
#define	HC_COMMAND_ADDRESS  0x83400002 		// ISP1160与CPU连接的地址(命令) 
#define	HC_DATA_ADDRESS  	0x83400000 		// ISP1160与CPU连接的地址(数据) 
 
#define HcRESET		(1<<25)	 
#define HcWU		(1<<22)	 
#define HcSUP		(1<<21)	 
 
//************************************************************************* 
// 函数名称:Sys_Hc_Ini 
// 输入参数:无 
// 输出参数:无 
// 功能描述:硬件系统初始化,用户在这里编写与硬件相关的设置。 
//************************************************************************* 
void Sys_Hc_Ini(void) 
{ 
	PINSEL1 &= 0xfffffffc;									// 配置P0.16为中断(EINT0) 
	PINSEL1 |= 0x00000001; 
	 
	PINSEL2 &= ~0x00000008;									// 配置P1.16~P1.25为GPIO口  
	 
	IO1DIR &= HcRESET+HcWU+HcSUP; 
	IO1DIR |= HcRESET+HcWU; 
	IO1SET = HcRESET+HcWU;					// 初始化输出引脚为高 
 
	BCFG3 = 0x10000400; 
/*** 在执行ISP1160硬件复位之前,应初始化硬件配置 ***/ 
	Sys_Hc_RESET();				// 总线复位 
} 
 
//************************************************************************* 
// 函数名称:outport 
// 输入参数:addr,输出的地址 
//			 data,输出的数据 
// 输出参数:无 
// 功能描述:向某地址写数据 
//************************************************************************* 
void outcommand( unsigned short  data) 
{ 
	* (volatile unsigned short *) HC_COMMAND_ADDRESS = data; 
} 
 
//************************************************************************* 
// 函数名称:outport 
// 输入参数:addr,输出的地址 
//			 data,输出的数据 
// 输出参数:无 
// 功能描述:向某地址写数据 
//************************************************************************* 
void outdata( unsigned short  data) 
{ 
	* (volatile unsigned short *) HC_DATA_ADDRESS	= data; 
} 
 
 
//************************************************************************* 
// 函数名称:inport 
// 输入参数:addr,读取数据的地址 
// 输出参数:data,返回的数据 
// 功能描述:从指定地址读回一个字 
//************************************************************************* 
unsigned short indata(void) 
{ 
	return	*((volatile unsigned short*) HC_DATA_ADDRESS); 
} 
 
void Sys_WaitinMS(unsigned int time); 
//************************************************************************* 
// 函数名称:Sys_Hc_RESET 
// 输入参数:无 
// 输出参数:无 
// 功能描述:ISP116x硬件复位 
//************************************************************************* 
void Sys_Hc_RESET(void) 
{ 
	IO0CLR = HcRESET; 
	Sys_WaitinMS(50); 
	IO0SET = HcRESET; 
	Sys_WaitinMS(2); 
} 
 
//************************************************************************* 
// 函数名称:Sys_Hc_SetWAKEUP 
// 输入参数:无 
// 输出参数:无 
// 功能描述:唤醒ISP116x 
//************************************************************************* 
void Sys_Hc_SetWAKEUP(void) 
{ 
	 
} 
 
//************************************************************************* 
// 函数名称:Sys_Hc_GetSUSPEND 
// 输入参数:无 
// 输出参数:无 
// 功能描述:获取ISP116x挂起状态 
//************************************************************************* 
uint8 Sys_Hc_GetSUSPEND(void) 
{ 
	return 0; 
} 
 
//************************************************************************** 
// 函数名称:SYS_ISP1160_IintIni 
// 输入参数:无 
// 输出参数:无 
// 功能描述:LPC2200与ISP1160连接的中断服务函数。 
//************************************************************************** 
void ISP1160_Exception(void) 
{ 
	isr_USB_Hc();			// 与ISP1160驱动接口的中断处理函数 
	 
/* 以下与用户硬件相关 */ 
/* 根据实际连接的中断引脚设置 */ 
	EXTINT = 0x01;		// EINT2 
	VICVectAddr = 0; 
} 
 
/***************************以上为用户需修改的函数************************/ 
 
//************************************************************************* 
// 函数名称:Sys_WaitinUS 
// 输入参数:time,等待时间 
// 输出参数:无 
// 功能描述:微秒延时,该延时只是操作系统起动前使用. 
//************************************************************************* 
void Sys_WaitinUS(unsigned int time) 
{ 
	unsigned int loop; 
	for(loop =time*30;loop>0 ;loop--) 
	{ 
		continue; 
	} 
} 
 
//************************************************************************* 
// 函数名称:Sys_WaitinMS 
// 输入参数:time,等待时间 
// 输出参数:无 
// 功能描述:毫秒延时,该延时只是操作系统起动前使用. 
//************************************************************************* 
void Sys_WaitinMS(unsigned int time) 
{ 
	unsigned int loop; 
	for(loop = time ; loop > 0 ;loop--) 
	{ 
		Sys_WaitinUS(1000);	//delay 1ms, CPU dependant, OS independant 
	} 
} 
 
//************************************************************************* 
// 函数名称:disable 
// 输入参数:无 
// 输出参数:无 
// 功能描述:禁止中断 
//************************************************************************* 
void disable(void) 
{ 
	OS_ENTER_CRITICAL(); 
} 
 
//************************************************************************* 
// 函数名称:disable 
// 输入参数:无 
// 输出参数:无 
// 功能描述:使能中断 
//************************************************************************* 
void enable(void)   
{ 
	OS_EXIT_CRITICAL(); 
}