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

📄 init.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:
**
********************************************************************************************************/

/****************************************************************************/
/*	includes																*/
/****************************************************************************/
#include "HostStack.h"


/****************************************************************************/
/*	function prototypes														*/
/****************************************************************************/
void		software_reset( void );
int		check1161_connected( void );
void 	set_register_values( void );

void USB_Host_Stack_Initialize( void )
{
	uint32 i;

#ifdef CLASS_DRIVE	
	class_driver_registration();
#endif
	device_list_linitialize();
	ini_endpoint_info();
 	ini_device_instance();
	atl_initialize();

	ini_mass_device_LUN_mem();
	ini_mass_device_mem();
	OS_rhsc_event = OSSemCreate(1);			

	software_reset();

	for(i=0;i<200;i++)
	 	if(check1161_connected()!=0)		
		   set_register_values();					
	return;
}


void software_reset( void )
{
	write_register16( Com16_HcSoftwareReset, 0x00F6 );
}

int check1161_connected( void )
{
	unsigned short		chip_id;
	unsigned short		tmp;
	
	chip_id		= read_register16( Com16_HcChipID );
	if ( (chip_id & 0xFF00) != 0x6100 )
		return ( 0 );

	tmp		= 0x55AA;				
	write_register16( Com16_HcScratch, tmp );
	if ( tmp != read_register16( Com16_HcScratch ) )
		return ( 0 );
	
	tmp		= ~tmp;				
	write_register16( Com16_HcScratch, tmp );
	if ( tmp != read_register16( Com16_HcScratch ) )
		return ( 0 );
	return ( chip_id );
}

void set_register_values( void )
{
	unsigned int	uValue;

	
	uValue = read_register32(Com32_HcCommandStatus);
	uValue |= 0x00000001;	
	write_register32(Com32_HcCommandStatus, uValue);
	while (read_register32(Com32_HcCommandStatus) & 0x00000001);
	write_register32( Com32_HcControl, 0 );
	write_register16( Com16_HcHardwareConfiguration, InitVal_HcHardwareConfiguration);
	write_register32( Com32_HcInterruptDisable,      InitVal_HcInterruptDisable      );
	write_register32( Com32_HcInterruptStatus,       InitVal_HcHcInterruptStatus     );

	write_register32( Com32_HcInterruptEnable, InitVal_HcInterruptEnable );			
	write_register16( Com16_HcuPInterruptEnable, InitVal_HcuPInterruptEnable );		
	uValue = read_register32(Com32_HcControl);
	write_register32( Com32_HcControl, uValue|0x600 );
	write_register32( Com32_HcFmInterval, InitVal_HcFmInterval);
	write_register32( Com32_HcRhDescriptorA, InitVal_HcRhDescriptorA );
	write_register32( Com32_HcRhDescriptorB, InitVal_HcRhDescriptorB );
	write_register32( Com32_HcRhStatus,      InitVal_HcRhStatus      );
	write_register16( Com16_HcITLBufferLength,       InitVal_HcITLBufferLength       );
	write_register16( Com16_HcATLBufferLength,       InitVal_HcATLBufferLength       );
	g_isr_flag	= 0x0000;											
	uValue = read_register16( Com16_HcHardwareConfiguration );
	write_register16( Com16_HcHardwareConfiguration, 	( uValue | 0x0001 ) );
	uValue = read_register32(Com32_HcControl);
	write_register32( Com32_HcControl, uValue|0x80 );
}



⌨️ 快捷键说明

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