亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usb.c

?? USBN9603的DEMO程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*----------------------------------------------------------------------------
 *  Copyright (c) 2001 by National Semiconductor Corporation
 *  National Semiconductor Corporation
 *
 *  All rights reserved
 *
 *<<<-------------------------------------------------------------------------
 * File Contents:
 *	usb.c - USB related functions
 *
 *  Project: USB Demo firmware
 *  Author : Yan Nosovitsky	
 *  Date   : Oct 2001
 *----------------------------------------------------------------------->>>*/
 
#include "..\include\all.h"

////////////////////////////////////////////////////
///				Externs
////////////////////////////////////////////////////

extern const int usbn9604_tx_endpoint_addr[];
extern const int usbn9604_rx_endpoint_addr[];
extern const int fifo_sizes[];


////////////////////////////////////////////////////
///				Globals
////////////////////////////////////////////////////


//Data buffers
extern control_buffer_t control_send_buffer;
extern control_buffer_t control_receive_buffer;

extern void Bulk_Parser(USB_request_t *req);
extern void Iso_Parser(USB_request_t *req);
extern void Gen_Parser(USB_request_t *req);
extern void Interrupt_Parser(USB_request_t *req);

/* The USB device status */
DEVICE_status_t device_status;
Device_buffers_t device_buffers;
USB_Device_ID_t usb_device_id;

////////////////////////////////////////////////////
///				Prototypes
////////////////////////////////////////////////////
void usb_dev_enable_ep(const USB_endpoint_desc_t *ep);
void usb_dev_disable_ep(const USB_endpoint_desc_t *ep);
byte get_deep_switch_settings() { return GET_DIP_SW1()&0x3f; }
void set_usb_device_id_value() 
{ usb_device_id.USB_Device_ID_Value = GET_DIP_SW1()&0x3f; }

/*----------------------------------------------------------------------------------------------
*	Prototype
*		void USBN9604_init(void)
*
*	Parameters
*		None
*
*	Returns
*		None
*
*	Description
*		Initializes the USBN9604
----------------------------------------------------------------------------------------------*/

void USBN9604_init(void)
{
	volatile unsigned int i;
	/*-----------------------------------------------------------------------
	* Set the alternate function pins to interrupt[iopd1] from USB INTR pin 
	*-----------------------------------------------------------------------*/
    PDALT |= 0x06;
    /*--------------
    * Hardware reset
    *---------------*/
	/*---------------------------------------
	 * Enable pull-up at port E 
	 *  This port alternate function is GPIO 
	 *--------------------------------------*/
	PEALT &= ~0x40;
	//for (i = 0; i < 0xffff; i++); //Give the USB some time to reset itself
	/*---------------------------------
	* Enable the IOPE6 pull-up in order 
	* to output the USB from reset 
	*---------------------------------*/
	PEWPU = 0x40;
	/*-----------------------------------
	 * USB node should have 2^14 cycles 
	 * of idle run after reset	
	 *---------------------------------*/
	for (i = 0; i < 0x4000; i++); 
	
	/*------------------------------------------------
	 * check if chip stabilized if not reset the chip
	 *------------------------------------------------*/
	for (i = 0; i < 0xffff; i++){
		write_usb(CCONF, i % 0x10);
		if (read_usb(CCONF) != (i % 0x10))
			WATCHDOG_RESET;
	}
    /*--------------------------------------------------------------
	 * Initialize the clock generator as input for the SCANPSC100F
     * prior to this point, the clock output will be 4 Mhz.  After,  
     * it will be (48 MHz/CLKDIV)
     *-------------------------------------------------------------*/ 
	if (GET_DIP_SW1() & 0x80)
		write_usb(CCONF, CLKDIV_SLOW-1);
	else 
		write_usb(CCONF, CLKDIV_FAST-1);

	write_7seg(read_usb(CCONF));

    /*---------------------------------------------------------------
	 * Give a software reset, then set ints to active high push pull 
	 *--------------------------------------------------------------*/
    write_usb(MCNTRL, SRST);	

    /*------------------------------------
    * Wait for end of the initiated reset 
    *------------------------------------*/
    while(read_usb(MCNTRL) & SRST);

    /* ----------------------------------------------------
	 * Set Rising Edge interrupt type and internal voltage 
	 *----------------------------------------------------*/
    write_usb(MCNTRL, INT_H_P | VGE);

    /*-------------------------
    * mask all USB node events
    *------------------------*/
	DISABLE_NODE_INTS


	/*-----------------------
	* Set up interrupt masks 
	*-----------------------*/
	/*----------------------
	 * NAK OUT FIFO 0 evnt 
	 *----------------------*/ 
    ENABLE_NAK_INTS(NAK_OUT0)			
	/*-------------------
	* enable TX  events 
	*------------------*/
    ENABLE_TX_INTS(TX_FIFO0|TX_FIFO1|TX_FIFO2|TX_FIFO3)
    /*-----------------
    * enable RX  events 
    *-----------------*/		
    ENABLE_RX_INTS(RX_FIFO0|RX_FIFO1|RX_FIFO2|RX_FIFO3)
    /*-----------------------------
    * ALT events include DMA event
    *-----------------------------*/	
    ENABLE_ALT_INTS(ALT_SD3|ALT_RESET|ALT_DMA)		
	
	/*----------------------------
	* Enable all below interrupts 
	*----------------------------*/
    ENABLE_NODE_INTS(INTR_E|RX_EV|NAK|TX_EV|ALT)
    /*----------------------------------------------
    * Workaround for Voltage Regulator Output issue
    *-----------------------------------------------*/
	write_usb(0x1f,0x40);
   
   
    reset_usb();
	/*---------------
	* Go operational 
	*---------------*/
    GOTO_STATE(OPR_ST)				


	ATTACH_NODE
	for (i = 0; i < 0xffff; i++);

}

/*----------------------------------------------------------------------------------------------
*	Prototype
*		void reset_usb(void)
*
*	Parameters
*		None
*
*	Returns
*		None
*
*	Description
*		Reset USB
----------------------------------------------------------------------------------------------*/
void reset_usb(void)
{

	/*------------------------------------
	 * set default address for endpoint 0
	 *-----------------------------------/
	SET_EP_ADDRESS(EPC0, 0x0)
    /*----------------------------------------------
	 * Set usb default device address (FAR register)
	 *---------------------------------------------*/
	SET_USB_DEVICE_ADDRESS(0x0)
   /*-----------------------------------------
	*enable USB device address (FAR register)
	*----------------------------------------*/
	USB_DEVICE_ADDRESS_ENABLE
	
	/*---------------------------------------------------------
	 * enable responce to the default address
	 * regardless to the value of the EPC0 and FAR registers
	 *--------------------------------------------------------*/

/*	Reset all endpoints */
/*	for (i=1; i<MAX_NUM_OF_ENDPOINTS; i++) 
	{
		if (usb_dev_endpoints[i] != NULL) 
			usb_dev_disable_ep(usb_dev_endpoints[i]);
	}
*/
	FLUSHTX0 //ep0
	FLUSHTX1 //ep1
	FLUSHTX2 //ep3
	FLUSHTX3 //ep5

	FLUSHRX0 //ep0
	FLUSHRX1 //ep2
	FLUSHRX2 //ep4

    /*----------------------
    * Global initalizations 
    *----------------------*/
	clear_control_buffer(&control_send_buffer);
	clear_control_buffer(&control_receive_buffer);
	endpoint_status_init();


	/*--------------------
	* Enable the receiver 
	*-------------------*/
    ENABLE_RX0	
	
}

/*----------------------------------------------------------------------------------------------
*	Prototype
*		void usb_device_reset(void)
*
*	Parameters
*		None
*
*	Returns
*		None
*
*	Description
*		 USB device reset
----------------------------------------------------------------------------------------------*/

void usb_device_reset(void)
{
    device_status.last_req = RESERVED_REQ;
    if (DEVICE_STATE(device_status) == DEV_ADDRESS || DEVICE_STATE(device_status) == DEV_CONFIGURED)
		SET_DEVICE_STATE(device_status, DEV_ATTACHED);

	device_buffers.zero_data = 0;

}
/*====================================================================
 *			USB Control Pipe Protocol Definitions
 *====================================================================*/

/*=================================================================
 *					USB device Descriptors
 *=================================================================*/

/*------------------------------
 * Device USB device descriptor
 *-----------------------------*/
const USB_device_desc_t usb_device_desc =
{
    sizeof(USB_device_desc_t),
    DEVICE_DESCRIPTOR,
    USB_SPEC_VERSION,
    CLASS_NOT_DEFINED, 		/* CLASS_VENDOR, vendor specific */
    0,						/* Device Sub-Class */
    0,						/* Device Protocol */
    EP0_FIFO_SIZE,			/* Max Packet Size for EndPoint Zero*/
    NSC_ID_VENDOR,
    NSC_ID_PRODUCT,
    0x0100, 				/* device release number: 01.00 NSC_BCDDEVICE */
    STR_MANUFACTURER,
    STR_PRODUCT,
    0,						/* Device's serial number */
    1						/* Num of configurations */
};



/*==================================================================
 *						Endpoints Descriptors					   
 *==================================================================*/


/*-------------------------------------
* Device Long Configuration descriptor 
*------------------------------------*/
const USB_long_config_desc_t usb_dev_long_config_desc =
{
	
	/*---------------------------------
	 * Device Configuration descriptor 
	 *--------------------------------*/
	{
    sizeof(USB_config_desc_t), 		/* CONFIG_DESC_LENGTH */
    CONFIG_DESCRIPTOR,
	sizeof(USB_long_config_desc_t), /* TOTAL CONFIG_DESC_LENGTH */
    1, 								/* one interface supported */
    1, 								/* Configuration number */
    0, 								/* no descriptor string STR_PRODUCT */
    0x80, 							/* bus powered SELF_POWERED, */
    100 							/* 0.2A (200mA)	 Max power consumption */
	},

	/*-------------------------------------------------
	 * USB device interface descriptor setting 0
	 * This setting does not contains Isochronous endpoints
	 * as required by the USB standard. FW does not use this setting
	 * for demo purpose, it exists only in order to achive 
	 * standard complience.
	 *------------------------------------------------*/
	{
    sizeof(USB_interface_desc_t),
    INTERFACE_DESCRIPTOR,
    0,								/* The only interface concurrently supported by this configuration */
    0,								/* Alternate Setting */
    NUM_OF_ENDPOINTS_FOR_ALT_0, 	/* Num of endpoints of this interface excluding endpoint zero */
    CLASS_VENDOR,					/* Vendor specific */
    0,								/* Sub class */
    CLASS_VENDOR,					/* Vendor Specific Interface Protocol */
    0
	},

	{
	/*------------------------------------------------
	* The IN endpoint 1 is used for bulk data transfer 
	*-----------------------------------------------*/
	{
    sizeof(USB_endpoint_desc_t),
    ENDPOINT_DESCRIPTOR,
    {
	ENDPOINT_1,
	0,
	IN
    },
    BULK_ENDPOINT,
    TX_BULK_EP_FIFO_SIZE,			/* Max Packet Size */
    0								/* Irrelevant */
	},
	
	/*-------------------------------------------------
	* The OUT endpoint 2 is used for bulk data transfer 
	*------------------------------------------------*/
	{
    sizeof(USB_endpoint_desc_t),
    ENDPOINT_DESCRIPTOR,
    {
	ENDPOINT_2,
	0,
	OUT
    },
    BULK_ENDPOINT,
    RX_BULK_EP_FIFO_SIZE,			/* Max Packet Size */
    0								/* Irrelevant */
	},
		
	/*-----------------------------------------------------
	* The IN endpoint 5 is used for interrupt data transfer 
	*-----------------------------------------------------*/
	{
    sizeof(USB_endpoint_desc_t),
    ENDPOINT_DESCRIPTOR,
    {
	ENDPOINT_5,
	0,
	IN
    },
    INTERRUPT_ENDPOINT,
    TX_INTR_EP_FIFO_SIZE,			/* Max Packet Size */
    0x1								/* Interrupt Interval, 1ms */
	}
	},
	/*-----------------------------------------
	 * USB device interface descriptor setting 1.
	 * This setting is used for the demo and contains
	 * all the endpoints (including Isochronus).
	 *----------------------------------------*/
	{
    sizeof(USB_interface_desc_t),
    INTERFACE_DESCRIPTOR,
    0,								/* The only interface concurrently supported by this configuration */
    1,								/* Alternate Setting */
    NUM_OF_ENDPOINTS_FOR_ALT_1,		/* Num of endpoints of this interface excluding endpoint zero */
    CLASS_VENDOR,					/* Vendor specific */
    0,								/* Sub class */
    CLASS_VENDOR,					/* Vendor Specific Interface Protocol */
    0
	},
	{
	/*------------------------------------------------
	* The IN endpoint 1 is used for bulk data transfer 
	*-----------------------------------------------*/
	{
    sizeof(USB_endpoint_desc_t),
    ENDPOINT_DESCRIPTOR,
    {
	ENDPOINT_1,
	0,
	IN
    },
    BULK_ENDPOINT,
    TX_BULK_EP_FIFO_SIZE,			/* Max Packet Size */
    0								/* Irrelevant */
	},
	
	/*-------------------------------------------------
	* The OUT endpoint 2 is used for bulk data transfer 
	*------------------------------------------------*/
	{
    sizeof(USB_endpoint_desc_t),
    ENDPOINT_DESCRIPTOR,
    {
	ENDPOINT_2,
	0,
	OUT
    },
    BULK_ENDPOINT,
    RX_BULK_EP_FIFO_SIZE,			/* Max Packet Size */
    0								/* Irrelevant */
	},

	/*--------------------------------------------------------
	* The IN endpoint 3 is used for isochronous data transfer 
	*-------------------------------------------------------*/
	{
    sizeof(USB_endpoint_desc_t),
    ENDPOINT_DESCRIPTOR,
    {
	ENDPOINT_3,
	0,
	IN
    },
    ISOCHRONOUS_ENDPOINT,
    TX_ISO_EP_FIFO_SIZE,			/* Max Packet Size */
    1								/* Irrelevant */
	},
	
	/*--------------------------------------------------------
	* The OUT endpoint 4 is used for isochronous data transfer 
	*--------------------------------------------------------*/
	{
    sizeof(USB_endpoint_desc_t),
    ENDPOINT_DESCRIPTOR,
    {
	ENDPOINT_4,
	0,
	OUT
    },
    ISOCHRONOUS_ENDPOINT,
    RX_ISO_EP_FIFO_SIZE,			/* Max Packet Size */
    1								/* Irrelevant */
	},

	/*-----------------------------------------------------
	* The IN endpoint 5 is used for interrupt data transfer 
	*-----------------------------------------------------*/
	{
    sizeof(USB_endpoint_desc_t),
    ENDPOINT_DESCRIPTOR,
    {
	ENDPOINT_5,
	0,
	IN
    },
    INTERRUPT_ENDPOINT,
    TX_INTR_EP_FIFO_SIZE,			/* Max Packet Size */
    0x1								/* Interrupt Interval, 1ms */
	}
	}
};

/*----------------------------
* List of endpoint descriptors 
*---------------------------*/
const USB_endpoint_desc_t *usb_dev_endpoints[2][7] =
{
{
    NULL,															/* Endpoint 0 */
    &usb_dev_long_config_desc.usb_dev_endpoint_alt_0_desc[0],		/* Endpoint 1 */
    &usb_dev_long_config_desc.usb_dev_endpoint_alt_0_desc[1],		/* Endpoint 2 */
    NULL,															/* Endpoint 3 */
    NULL,															/* Endpoint 4 */
    &usb_dev_long_config_desc.usb_dev_endpoint_alt_0_desc[2],		/* Endpoint 5 */
    NULL 															/* Endpoint 6 */
},
{
    NULL,															/* Endpoint 0 */
    &usb_dev_long_config_desc.usb_dev_endpoint_alt_1_desc[0],		/* Endpoint 1 */
    &usb_dev_long_config_desc.usb_dev_endpoint_alt_1_desc[1],		/* Endpoint 2 */
    &usb_dev_long_config_desc.usb_dev_endpoint_alt_1_desc[2],		/* Endpoint 3 */
    &usb_dev_long_config_desc.usb_dev_endpoint_alt_1_desc[3],		/* Endpoint 4 */
    &usb_dev_long_config_desc.usb_dev_endpoint_alt_1_desc[4],		/* Endpoint 5 */
    NULL 															/* Endpoint 6 */
}
};


/*=================================================================*
 *					Vendor Device Descriptor
 *=================================================================*/


USB_Device_ID_t usb_device_id =
{
	0x0,			/* default usb device id*/
	HARDWARE_USB_ID	/* default usb device id source */
};
	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合久久99| 色美美综合视频| 精品国产免费久久| 精品一区二区在线播放| 久久久影院官网| heyzo一本久久综合| 综合色天天鬼久久鬼色| 日本高清不卡aⅴ免费网站| 亚洲主播在线观看| 欧美一区二区私人影院日本| 精品亚洲porn| 国产欧美日韩亚州综合| 色欧美88888久久久久久影院| 亚洲国产另类av| 欧美大片在线观看一区二区| 国产成人啪免费观看软件 | 国产精品一区久久久久| 亚洲国产精品v| 日本精品一区二区三区四区的功能| 亚洲人亚洲人成电影网站色| 在线不卡一区二区| 国产高清亚洲一区| 一区二区三区日韩精品视频| 欧美一级日韩免费不卡| 成人免费视频一区| 亚洲国产wwwccc36天堂| 久久精子c满五个校花| 91老司机福利 在线| 青青草国产精品97视觉盛宴| 国产精品视频一二三区| 欧美顶级少妇做爰| 北条麻妃一区二区三区| 日韩和的一区二区| 中文字幕日韩av资源站| 欧美一区二区啪啪| 色婷婷综合久久久中文字幕| 久久 天天综合| 一级中文字幕一区二区| 国产色91在线| 欧美一级午夜免费电影| 91麻豆.com| 国产一二精品视频| 日韩成人一级片| 亚洲精品中文字幕在线观看| 国产亚洲欧美在线| 777久久久精品| 91在线精品秘密一区二区| 国产综合色在线视频区| 午夜影院久久久| 亚洲人成人一区二区在线观看| 日韩三级精品电影久久久| 91久久免费观看| 不卡在线视频中文字幕| 国产精品一区二区三区网站| www.综合网.com| 国产在线一区二区| 青青草97国产精品免费观看| 一区二区三区精品在线观看| 国产精品你懂的在线| 久久亚洲免费视频| 日韩视频免费直播| 欧美日韩国产bt| 欧美色综合网站| 91网站最新网址| 99久久99久久精品国产片果冻| 国产一区二区三区观看| 精品制服美女久久| 美女www一区二区| 全国精品久久少妇| 日韩综合一区二区| 日韩国产一区二| 视频一区中文字幕| 奇米精品一区二区三区在线观看一| 亚洲第一综合色| 亚洲一区欧美一区| 亚洲一区二区三区视频在线| 夜夜嗨av一区二区三区网页| 一区二区三区四区五区视频在线观看| 亚洲视频一区二区免费在线观看| 国产精品日韩精品欧美在线| 久久久久99精品一区| 国产欧美一二三区| 亚洲欧洲99久久| 亚洲码国产岛国毛片在线| 亚洲精品国产精华液| 一区二区三区高清不卡| 亚洲成人av在线电影| 午夜一区二区三区在线观看| 日韩精品一二三四| 久久国产精品99久久人人澡| 国内精品写真在线观看| 国产精品一区二区不卡| 91亚洲国产成人精品一区二区三 | 久久综合精品国产一区二区三区 | 制服丝袜av成人在线看| 7777精品伊人久久久大香线蕉超级流畅 | www欧美成人18+| 中文字幕 久热精品 视频在线 | 国产精品国产三级国产aⅴ入口| 国产精品夫妻自拍| 亚洲国产成人91porn| 久久99国产精品尤物| 高清av一区二区| 日本韩国一区二区三区视频| 欧美猛男gaygay网站| 精品捆绑美女sm三区| 中文字幕在线一区免费| 亚洲影视资源网| 国产精品一区二区男女羞羞无遮挡| aaa国产一区| 欧美高清视频一二三区 | 国产精品五月天| 亚洲成人一区二区| 国产经典欧美精品| 在线视频中文字幕一区二区| 精品国产人成亚洲区| 中文字幕永久在线不卡| 秋霞电影网一区二区| 不卡高清视频专区| 91精品欧美一区二区三区综合在| 久久精品男人的天堂| 夜夜嗨av一区二区三区四季av | 精品国产免费人成在线观看| 国产精品国产精品国产专区不蜜| 午夜精品福利一区二区蜜股av| 国产精品77777| 欧美日韩国产一区二区三区地区| 久久色.com| 午夜久久久影院| 成人激情免费视频| 日韩精品一区二区三区在线观看 | 欧美日本一区二区| 欧美激情一区在线| 日韩高清在线一区| 99re成人在线| 久久久久国产精品厨房| 亚洲成人激情自拍| 91免费观看国产| 久久久久久免费网| 蜜臀av性久久久久av蜜臀妖精| 欧洲一区二区av| 亚洲九九爱视频| 9久草视频在线视频精品| 亚洲精品在线免费播放| 日韩在线卡一卡二| 91福利精品视频| 中文字幕视频一区二区三区久| 国产经典欧美精品| 久久夜色精品国产噜噜av| 麻豆91精品91久久久的内涵| 欧美色图在线观看| 亚洲激情av在线| 91麻豆国产福利在线观看| 国产精品久久久久9999吃药| 国产乱子伦视频一区二区三区| 日韩一级高清毛片| 日韩av一区二| 91精品国产综合久久婷婷香蕉| 亚洲自拍偷拍麻豆| 欧美日韩日日夜夜| 亚洲午夜在线视频| 欧美亚洲一区三区| 亚洲第一综合色| 欧美一区二区三区婷婷月色| 午夜成人免费视频| 欧美视频一区二区三区| 香蕉乱码成人久久天堂爱免费| 色偷偷久久一区二区三区| 一区二区三区不卡在线观看 | 精品裸体舞一区二区三区| 免费av成人在线| 日韩欧美在线网站| 免费成人在线播放| 26uuu亚洲| 粉嫩aⅴ一区二区三区四区| 国产免费久久精品| eeuss鲁片一区二区三区在线看| 国产精品三级在线观看| 色先锋资源久久综合| 亚洲一区二区三区爽爽爽爽爽 | 国产在线看一区| 国产精品美女视频| 色婷婷激情综合| 亚洲国产美国国产综合一区二区| 91精品国产综合久久精品性色 | 国产综合久久久久影院| 国产欧美精品一区| 91精品1区2区| 视频一区欧美精品| 久久精品亚洲国产奇米99| 99久久精品国产毛片| 一区二区免费视频| 日韩欧美美女一区二区三区| 国产精品99久久不卡二区| 亚洲日本电影在线| 91精品在线免费观看| 国产盗摄女厕一区二区三区| 亚洲卡通动漫在线| 精品国内二区三区| 91老师片黄在线观看|