亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
色综合天天狠狠| 欧美一区永久视频免费观看| 99re成人在线| 欧美三级视频在线观看| 日韩视频免费直播| 国产免费观看久久| 亚洲一区二区在线免费看| 日日夜夜免费精品视频| 国产999精品久久久久久| 色综合久久中文字幕| 99re成人精品视频| 正在播放亚洲一区| 国产精品乱码妇女bbbb| 午夜不卡av在线| 国产在线精品视频| 欧美午夜片在线观看| 久久奇米777| 亚洲综合男人的天堂| 国产九色精品成人porny| 国产一区二区三区| 欧美日本在线观看| 国产精品久久久久久久第一福利| 日韩国产欧美在线播放| av一区二区三区在线| 欧美大尺度电影在线| 亚洲国产中文字幕| 国产精品66部| 精品久久99ma| 亚洲一区电影777| 丁香婷婷综合色啪| 欧美大尺度电影在线| 亚洲一区二区三区自拍| av一二三不卡影片| 久久网这里都是精品| 日韩中文字幕区一区有砖一区| 国产一区福利在线| 精品盗摄一区二区三区| 偷拍与自拍一区| 欧美日韩午夜在线| 亚洲码国产岛国毛片在线| 国产精品一区二区三区99| 欧美xfplay| 久久99热狠狠色一区二区| 在线一区二区观看| 亚洲黄色av一区| 一本大道av一区二区在线播放| 欧美国产在线观看| 另类小说视频一区二区| 欧美一区二区精品| 日韩电影免费一区| 欧美一区二区精美| 麻豆视频观看网址久久| 欧美一区二区三区在线电影| 日韩一区精品视频| 日韩三级在线免费观看| 久久99精品国产.久久久久| 日韩一区二区三区免费观看| 亚洲午夜影视影院在线观看| 99久久99久久免费精品蜜臀| 亚洲精品水蜜桃| 91久久精品午夜一区二区| 一区二区三区在线观看视频| 在线观看欧美日本| 天堂一区二区在线免费观看| 日韩午夜激情免费电影| 久草精品在线观看| 亚洲国产成人私人影院tom| 国产91精品入口| 久久精品一二三| 成人黄色在线网站| 亚洲欧美区自拍先锋| 欧美日韩免费一区二区三区| 日韩电影在线看| 久久亚洲精精品中文字幕早川悠里| 国产精品一区二区无线| 国产精品久久久久久久岛一牛影视 | 中文字幕av一区 二区| 成人app在线观看| 一级日本不卡的影视| 日韩一级视频免费观看在线| 国产精品乡下勾搭老头1| 亚洲欧美激情插| 在线免费观看视频一区| 日本成人超碰在线观看| 国产女同性恋一区二区| 在线一区二区三区做爰视频网站| 免费精品视频最新在线| 国产精品福利一区| 欧美精品丝袜久久久中文字幕| 爽好久久久欧美精品| 国产午夜精品久久久久久久 | 国产在线麻豆精品观看| 欧美性受极品xxxx喷水| 国产自产v一区二区三区c| 一区二区三区成人| 久久久久久久综合色一本| 欧美在线综合视频| 国产乱码字幕精品高清av | 欧美大尺度电影在线| 91污片在线观看| 美国一区二区三区在线播放| 中文字幕日本不卡| 久久午夜羞羞影院免费观看| 欧美视频你懂的| 男男gaygay亚洲| 亚洲综合色噜噜狠狠| 欧美国产成人在线| 日韩你懂的电影在线观看| 91视频.com| 国产mv日韩mv欧美| 六月丁香婷婷色狠狠久久| 国产精品不卡一区| 国产亚洲一本大道中文在线| 91精品国产乱| 91国在线观看| aaa欧美色吧激情视频| 国产在线精品一区二区夜色| 亚洲国产成人va在线观看天堂| 国产精品成人网| 日韩欧美高清一区| 在线成人av网站| 欧美三级乱人伦电影| 白白色 亚洲乱淫| 日韩电影一二三区| 亚洲精品少妇30p| 欧美极品少妇xxxxⅹ高跟鞋| 精品日韩欧美一区二区| 欧美精品在欧美一区二区少妇| 91视频www| 色狠狠色狠狠综合| 91精品婷婷国产综合久久竹菊| 制服.丝袜.亚洲.另类.中文| 日韩欧美一二三四区| 久久精品一区二区三区av| 国产精品久久久久久久久果冻传媒 | 国产三级精品在线| 国产精品久久影院| 一区二区三区中文在线观看| 五月天亚洲精品| 久草精品在线观看| 99视频精品在线| 欧美日本乱大交xxxxx| 2欧美一区二区三区在线观看视频| 亚洲国产精品传媒在线观看| 伊人婷婷欧美激情| 久久99精品久久久久久动态图 | 亚洲欧美国产毛片在线| 日韩精品一二区| 成人黄色软件下载| 在线综合视频播放| 国产无一区二区| 午夜视频一区在线观看| 国产精品一区不卡| 欧美亚洲高清一区| 国产无遮挡一区二区三区毛片日本| 亚洲综合av网| 国产原创一区二区三区| 欧美亚洲尤物久久| 欧美极品另类videosde| 日本最新不卡在线| 91在线观看一区二区| 欧美xxx久久| 亚洲成年人影院| 菠萝蜜视频在线观看一区| 777亚洲妇女| 亚洲精品日日夜夜| 成人开心网精品视频| 欧美另类变人与禽xxxxx| 国产拍欧美日韩视频二区 | 亚洲精品视频在线观看网站| 紧缚捆绑精品一区二区| 欧美日韩午夜在线| 亚洲色图都市小说| 国产不卡视频一区二区三区| 欧美一区二区视频在线观看2022 | 91免费看`日韩一区二区| 久久综合色之久久综合| 亚洲国产精品精华液网站| 成人一道本在线| 2021久久国产精品不只是精品| 天天综合色天天| 欧美性生活影院| 亚洲精品水蜜桃| 91啪亚洲精品| 国产精品欧美一区二区三区| 国产一区二区91| 2020日本不卡一区二区视频| 蜜臀av一区二区在线观看| 欧美人狂配大交3d怪物一区| 亚洲一区电影777| 日本丰满少妇一区二区三区| 国产精品久久久久久久久快鸭| 国产麻豆欧美日韩一区| 精品成人佐山爱一区二区| 日本不卡一二三| 日韩欧美一卡二卡| 极品少妇xxxx精品少妇偷拍| 欧美成人video| 国产自产视频一区二区三区| 久久五月婷婷丁香社区|