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

📄 gfd_usb_init.c

📁 tells you how to do the lab
💻 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 + -