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

📄 sys_lpc2100.c

📁 ARM读写U盘驱动软件包源程序
💻 C
字号:
/****************************************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"

/*******************************************************************************************************/
/*                                 ISP1160MB PACK板ISP1160与LCP2100硬件连接        											   */
/* D0~7  -- P0.16~P0.23																				   */
/* D8~15 -- P2.16~P1.23 																			   */
/* INT1  -- P0.15(EINT2)																			   */
/* A0~1  -- P0.8(A1-GND)																			   */
/* CS	 --	GND																						   */
/* WR    -- P0.13																					   */
/* RD    -- P0.12																					   */
/* RSET  -- P0.10																					   */
/* WU	 -- 不使用  																				   */
/* SUP	 -- 不使用	    																			   */
/* 以下为使用GPIO控制ISP1160配置																	   */
/*******************************************************************************************************/

#define BUS_RD		(1<<12)
#define BUS_WR		(1<<13)
#define BUS_DATAL	(0xFF<<16)
#define BUS_DATAH	(0xFF<<16)
#define BUS_DATA	(BUS_DATAH|BUS_DATAL)
#define BUS_A1		(1<<8)
#define HcRESET		(1<<10)	


//*************************************************************************
// 函数名称:Sys_Hc_Ini
// 输入参数:无
// 输出参数:无
// 功能描述:硬件系统初始化,用户在这里编写与硬件相关的设置。
//*************************************************************************
void Sys_Hc_Ini(void)
{
	PINSEL0 &= ~((3<<10*2)|(3U<<8*2)|(3<<12*2)|(3<<13*2)|(3U<<15*2));	// 先配置P0.0~P0.15所有相关引脚(P0.8、P0.10、P0.12、P0.13、P0.15)为GPIO口
	PINSEL0 |= 2U<<15*2;
	IO0DIR  &= ~(HcRESET+BUS_A1+BUS_WR+BUS_RD+BUS_DATAL);	// 先配置P0.0~P0.15所有相关引脚(P0.10、P0.12、P0.13、P0.15)为输入
	IO0DIR  |= HcRESET+BUS_A1+BUS_WR+BUS_RD;				// 配置相关输出引脚
	
	PINSEL1 &= 0xffff0000;									// 配置P0.16~P0.23为GPIO口
	IO0DIR	&= ~BUS_DATAL;  									// 配置P1.16~P1.23为输入
	
	PINSEL2 = 0x00000004;									// 配置P1.16~P1.25为GPIO口 
	IO1DIR	&= ~BUS_DATAH;   								// 配置P1.16~P1.23为输入
	
	
	IO0CLR = HcRESET+BUS_A1+BUS_WR+BUS_RD;					// 初始化输出引脚为高

	IO0SET = HcRESET+BUS_A1+BUS_WR+BUS_RD;					// 初始化输出引脚为高

/*** 在执行ISP1160硬件复位之前,应初始化硬件配置 ***/
	Sys_Hc_RESET();				// 总线复位
}

//*************************************************************************
// 函数名称:outcommand
// 输入参数:data,输出的数据
// 输出参数:无
// 功能描述:写命令寄存器
//*************************************************************************
void outcommand( unsigned short  data)
{
	IO0SET  = BUS_A1;					// 设置地址

	IO0DIR |= BUS_DATAL;				// 使能低8位数据输出
	IO1DIR |= BUS_DATAH;				// 使能高8位数据输出
		
	IO0CLR = BUS_DATAL;					// 清零低8位数据
	IO1CLR = BUS_DATAH;					// 清零高8位数据
	
	IO0SET = BUS_DATAL & (data<<16);	// 输出低8位数据
	IO1SET = BUS_DATAH & (data<<8);		// 输出高8位数据
	
	IO0CLR  = BUS_WR;					// 写信号使能	
	IO0SET  = BUS_WR; 				
}

//*************************************************************************
// 函数名称:outdata
// 输入参数:data,输出的数据
// 输出参数:无
// 功能描述:写数据寄存器
//*************************************************************************
void outdata( unsigned short data)
{
	IO0CLR  = BUS_A1;					// 设置地址

	IO0DIR |= BUS_DATAL;				// 使能低8位数据输出
	IO1DIR |= BUS_DATAH;				// 使能高8位数据输出
		
	IO0CLR = BUS_DATAL;					// 清零低8位数据
	IO1CLR = BUS_DATAH;					// 清零高8位数据
	
	IO0SET = BUS_DATAL & (data<<16);	// 输出低8位数据
	IO1SET = BUS_DATAH & (data<<8);		// 输出高8位数据
	
	IO0CLR  = BUS_WR;					// 写信号使能	
	IO0SET  = BUS_WR; 				

}


//*************************************************************************
// 函数名称:indata
// 输入参数:无
// 输出参数:data,返回的数据
// 功能描述:读入数据
//*************************************************************************
unsigned short indata(void)
{
	uint16 data16;

	IO0CLR = BUS_A1;						// 地址使能
	
	IO0DIR &= ~BUS_DATAL;					// 使能数据低8位输入
	IO1DIR &= ~BUS_DATAH;					// 使能数据高8位输入

	IO0CLR = BUS_RD;						// 写信号使能	
	data16 = (IO0PIN&BUS_DATAL)>>16;
	data16 |= (IO1PIN&BUS_DATAH)>>8;
	IO0SET = BUS_RD; 	

	return data16;
}

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 = 0x04;		// 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();
}






⌨️ 快捷键说明

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