?? gfd_usb_init.c
字號:
/**************************************************************************************
*
* (c) 2004 ASIC,all rights reserved
*
*
* This source code and any compilation or derivative thereof
*is proprietary information and is confidential in nature.
* Under no circumstance is this software to be exposed or placed
*under an open source License of any type without expressed
*written permission of ASIC.
*
*filename: main.c
*history:
*
* Version Date Author Comments
*------------------------------------------------------------------------------------
* 1.0 2004.9.24 lmq Initial Creation
* 1.1 2005.3.24 xl added the initiation of global struct MSDevice
**************************************************************************************/
#include "HA_TypeDef.h"
#include "hardware_reg.h"
#include "hardware.h"
#include "Gfd_usb_irq.h"
/*-------------------------------------------------------------------*
* 外部函數(shù)聲明
*-------------------------------------------------------------------*/
extern ER usb_RMW_reg(U32 reg, U32 val);
extern struct USBDevice *pMSDevice;
/*-------------------------------------------------------------------*
* 函數(shù)定義
*-------------------------------------------------------------------*/
int init_usb( void )
{
/*usb initialization*/
/*USB 各個寄存器的初始化*/
usb_RMW_reg((U32)USB_EP0OUTSTAT, 0x02);
usb_RMW_reg((U32)USB_EP1OUTSTAT, 0x02);
usb_RMW_reg((U32)USB_EP1INSTAT, 0x02);
usb_RMW_reg((U32)USB_EP2OUTSTAT, 0x02);
usb_RMW_reg((U32)USB_EP2INSTAT, 0x02);
usb_write_reg((U32)USB_INTR,0);
usb_write_reg((U32)USB_INTRMASK, 0x172);
usb_write_reg((U32)USB_EP0OUTMAXPKTSIZE, 0x8);
usb_write_reg((U32)USB_EP1OUTMAXPKTSIZE, 0x40);
usb_write_reg((U32)USB_EP1INMAXPKTSIZRE, 0x40);
usb_write_reg((U32)USB_EP2OUTMAXPKTSIZE, 0x40);
usb_write_reg((U32)USB_EP2INMAXPKTSIZE, 0x40);
usb_write_reg((U32)USB_EP1OUTBMATTR, 0x02);
usb_write_reg((U32)USB_EP2INBMATTR, 0x02);
usb_write_reg((U32)USB_BMATTRIBUTES, 0xe0);
*(RP)USB_RECEIVETYPE = 0X1;
irq_enable(INT_USB);
unmask_irq(INT_USB);
irq_enable(INT_DMA);
unmask_irq(INT_DMA);
/*初始化全局結(jié)構(gòu)變量*/
pMSDevice->dUSBTrans.bulkindatebuf = (U32 *)(0x1fff4200);/* malloc for buffer */
pMSDevice->dUSBStat.epstate = EPCL;
pMSDevice->dUSBStat.setconstate = NSETCONFIG;
pMSDevice->dUSBStat.usbdmapp = NAPP;
pMSDevice->dUSBStat.usbstate = USBDEF;//USBDEF說明設(shè)備第一次連接到PC上,還未進行配置
pMSDevice->dUSBTrans.desc_len = 1;
pMSDevice->dUSBTrans.head_temp = (U32*)0;
pMSDevice->dUSBTrans.longpk = SHORTPK;
pMSDevice->dUSBTrans.longurb = 0;
pMSDevice->dUSBTrans.usbmod = 0;
pMSDevice->dCtrlTrans.statempty = NEMPTY;
pMSDevice->dBulkStat.blkstate = BLKCMD;
pMSDevice->dBulkStat.descactu_len = 0;
pMSDevice->dBulkStat.unsinglepocket = UNSINGLE;
pMSDevice->dCBW.requlen =0;
pMSDevice->dCSW.sing = UNSI;
pMSDevice->dCSW.tlengh = 13;
return;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -