📄 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"
/*-------------------------------------------------------------------*
* 外部函数声明
*-------------------------------------------------------------------*/
extern ER usb_RMW_reg(U32 reg, U32 val);
extern struct USBDevice *pMSDevice;
/*-------------------------------------------------------------------*
* 函数定义
*-------------------------------------------------------------------*/
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);
/*初始化全局结构变量*/
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说明设备第一次连接到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;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -