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

📄 testheader.h

📁 USB2.0原理与工程开发光盘(第二版)
💻 H
字号:

#ifndef TESTHEADER_H		
#define TESTHEADER_H

typedef unsigned char	BYTE;
typedef unsigned short	WORD;
typedef unsigned long	DWORD;
typedef bit		BOOL;

#define	TRUE 	1
#define FALSE	0

#define DEVICE_DSCR		0x01		
#define CONFIG_DSCR		0x02		
#define STRING_DSCR		0x03		
#define INTRFC_DSCR		0x04		
#define ENDPNT_DSCR		0x05		

#define SC_GET_STATUS			0x00	
#define SC_CLEAR_FEATURE		0x01	
#define SC_RESERVED			0x02	
#define SC_SET_FEATURE			0x03	
#define SC_SET_ADDRESS			0x05	
#define SC_GET_DESCRIPTOR		0x06	
#define SC_SET_DESCRIPTOR		0x07	
#define SC_GET_CONFIGURATION	        0x08	
#define SC_SET_CONFIGURATION	        0x09	
#define SC_GET_INTERFACE		0x0a	
#define SC_SET_INTERFACE		0x0b	
#define SC_SYNC_FRAME			0x0c	
#define SC_ANCHOR_LOAD			0xa0	

#define GD_DEVICE				0x01	
#define GD_CONFIGURATION		0x02	
#define GD_STRING				0x03	

#define GS_DEVICE				0x80	
#define GS_INTERFACE			0x81	
#define GS_ENDPOINT				0x82	

#define FT_DEVICE				0x00	
#define FT_ENDPOINT				0x02	

typedef struct				
{
	BYTE	length;			
	BYTE	type;			
	BYTE	spec_ver_minor;	
	BYTE	spec_ver_major;	
	BYTE	dev_class;	
	BYTE	sub_class;	
	BYTE	protocol;	
	BYTE	max_packet;	
	WORD	vendor_id;	
	WORD	product_id;	
	WORD	version_id;	
	BYTE	mfg_str;	
	BYTE	prod_str;	
	BYTE	serialnum_str;	
	BYTE	configs;	
}DEVICEDSCR;

typedef struct
{
	BYTE	length;			
	BYTE	type;			
	WORD	config_len;		
	BYTE	interfaces;		
	BYTE	index;			
	BYTE	config_str;		
	BYTE	attrib;			
	BYTE	power;			
}CONFIGDSCR;

typedef struct
{
	BYTE	length;		
	BYTE	type;		
	BYTE	index;		
	BYTE	alt_setting;	
	BYTE	ep_cnt;		
	BYTE	class;		
	BYTE	sub_class;	
	BYTE	protocol;	
	BYTE	interface_str;	
}INTRFCDSCR;   

typedef struct
{
	BYTE	length;		
	BYTE	type;		
	BYTE	addr;		
	BYTE	ep_type;	
	BYTE	mp_L;		
	BYTE	mp_H;
	BYTE	interval;	
}ENDPNTDSCR;   

typedef struct
{
	BYTE	length;		
	BYTE	type;		
}STRINGDSCR;

#define	INT0_VECT	0
#define	TMR0_VECT	1
#define	INT1_VECT	2
#define	TMR1_VECT	3
#define	COM0_VECT	4
#define	TMR2_VECT	5
#define	WKUP_VECT	6
#define	COM1_VECT	7
#define	USB_VECT	8
#define	I2C_VECT	9
#define	INT4_VECT	10
#define	INT5_VECT	11
#define	INT6_VECT	12

#define	SUDAV_USBVECT	(0 << 2)
#define	SOF_USBVECT	(1 << 2)
#define	SUTOK_USBVECT	(2 << 2)
#define	SUSP_USBVECT	(3 << 2)
#define	URES_USBVECT	(4 << 2)
#define	SPARE_USBVECT	(5 << 2)
#define	IN0BUF_USBVECT	(6 << 2)
#define	OUT0BUF_USBVECT	(7 << 2)
#define	IN1BUF_USBVECT	(8 << 2)
#define	OUT1BUF_USBVECT	(9 << 2)
#define	IN2BUF_USBVECT	(10 << 2)
#define	OUT2BUF_USBVECT	(11 << 2)
#define	IN3BUF_USBVECT	(12 << 2)
#define	OUT3BUF_USBVECT	(13 << 2)
#define	IN4BUF_USBVECT	(14 << 2)
#define	OUT4BUF_USBVECT	(15 << 2)
#define	IN5BUF_USBVECT	(16 << 2)
#define	OUT5BUF_USBVECT	(17 << 2)
#define	IN6BUF_USBVECT	(18 << 2)
#define	OUT6BUF_USBVECT	(19 << 2)
#define	IN7BUF_USBVECT	(20 << 2)
#define	OUT7BUF_USBVECT	(21 << 2)

#define MSB(word)		(BYTE)(((WORD)word >> 8) & 0xff)
#define LSB(word)		(BYTE)((WORD)word & 0xff)

#define SWAP_ENDIAN(word)	((BYTE*)&word)[0] ^= ((BYTE*)&word)[1];\
				((BYTE*)&word)[1] ^= ((BYTE*)&word)[0];\
				((BYTE*)&word)[0] ^= ((BYTE*)&word)[1]


#define EZUSB_IRQ_CLEAR()	EXIF &= ~0x10		
#define EZUSB_CLEAR_RSMIRQ()		(EICON &= ~0x20)
#define EZUSB_STALL_EP0()		EP0CS |= bmEPSTALL 
#define EZUSB_STALL_EP(ep_id)  		EPIO[ep_id].cntrl = bmEPSTALL
#define EZUSB_UNSTALL_EP(ep_id)		EPIO[ep_id].cntrl = 0
#define EZUSB_RESET_DATA_TOGGLE(ep)     TOGCTL = (((ep & 0x80) >> 3) + (ep & 0x07));\
                                        TOGCTL |= 0x20
#define EZUSB_EXTWAKEUP()		(USBCS & bmRWAKEUP)
#define EZUSB_SET_EP_BYTES(ep_id,count)	EPIO[ep_id].bytes = count 
#define EZUSB_UNARM_EP(ep_id)  		EPIO[ep_id].cntrl = bmEPBUSY

#endif  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -