📄 init.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 + -