📄 usb.h
字号:
#ifndef __USB
#define __USB
#define __USB_NUM_ENDPOINTS 4
#define __USB_MAX_ENDPOINTS 3
#define __EP0_DATA_PHASE_PACKET 3
#define __EP0_TX_FIFO_SIZE 16
#define __EP0_RX_FIFO_SIZE 16
#define __EP0_PACKET_SIZE 16
#define __EP1_TX_FIFO_SIZE 16
#define __EP1_RX_FIFO_SIZE 16
#define __EP1_PACKET_SIZE 16
#define __EP2_TX_FIFO_SIZE 64
#define __EP2_RX_FIFO_SIZE 64
#define __EP2_PACKET_SIZE 64
#define __MAX_CONTROLDATA_SIZE 8
//###
//### Descriptor type俊 措秦 沥狼茄促.
//###
#define __DEVICE_DESCRIPTOR_TYPE 0x01
#define __CONFIGURATION_DESCRIPTOR_TYPE 0x02
#define __INTERFACE_DESCRIPTOR_TYPE 0x04
#define __ENDPOINT_DESCRIPTOR_TYPE 0x05
#define __STRING_DESCRIPTOR_TYPE 0x03
#define __POWER_DESCRIPTOR_TYPE 0x06
//###
//### Device Request 秦籍阑 困茄 Macro沥狼.
//###
#define __USB_ENDPOINT_DIRECTION_MASK 0x80
#define __USB_DEVICE_ADDRESS_MASK 0x7F
#define __USB_RECIPIENT 0x1F
#define __USB_RECIPIENT_DEVICE 0x00
#define __USB_RECIPIENT_INTERFACE 0x01
#define __USB_RECIPIENT_ENDPOINT 0x02
#define __USB_REQUEST_TYPE_MASK 0x60
#define __USB_STANDARD_REQUEST 0x00
#define __USB_CLASS_REQUEST 0x20
#define __USB_VENDOR_REQUEST 0x40
#define __USB_REQUEST_MASK 0x0F
#define __USB_FEATURE_ENDPOINT_STALL 0x0000
#define __USB_FEATURE_REMOTE_WAKEUP 0x0001
#define __USB_FEATURE_POWER_D0 0x0002
#define __USB_FEATURE_POWER_D1 0x0003
#define __USB_FEATURE_POWER_D2 0x0004
#define __USB_FEATURE_POWER_D3 0x0005
#define __USB_REQUEST_TYPE_MASK 0x60
#define __USB_STANDARD_REQUEST 0x00
#define __USB_CLASS_REQUEST 0x20
#define __USB_VENDOR_REQUEST 0x40
#define __USB_REQUEST_MASK 0x0F
#define __USB_ENDPOINT_TYPE_MASK 0x03
#define __USB_ENDPOINT_TYPE_CONTROL 0x00
#define __USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01
#define __USB_ENDPOINT_TYPE_BULK 0x02
#define __USB_ENDPOINT_TYPE_INTERRUPT 0x03
#define __USB_REQUEST_GET_STATUS 0x00
#define __USB_REQUEST_CLEAR_FEATURE 0x01
#define __USB_REQUEST_SET_FEATURE 0x03
#define __USB_REQUEST_SET_ADDRESS 0x05
#define __USB_REQUEST_GET_DESCRIPTOR 0x06
#define __USB_REQUEST_SET_DESCRIPTOR 0x07
#define __USB_REQUEST_GET_CONFIGURATION 0x08
#define __USB_REQUEST_SET_CONFIGURATION 0x09
#define __USB_REQUEST_GET_INTERFACE 0x0A
#define __USB_REQUEST_SET_INTERFACE 0x0B
#define __USB_REQUEST_SYNC_FRAME 0x0C
#define __USB_IDLE 0
#define __USB_TRANSMIT 1
#define __USB_RECEIVE 2
#define __STR_INDEX_LANGUAGE 0x00
#define __STR_INDEX_MANUFACTURER 0x01
#define __STR_INDEX_PRODUCT 0x02
#define __STR_INDEX_SERIALNUMBER 0x03
#define __STR_INDEX_CONFIGURATION 0x04
#define __STR_INDEX_INTERFACE 0x05
#define __USB_JOB_IDLE 0x00
#define __USB_JOB_BUS_RESET 0x01
#define __USB_JOB_SUSPEND 0x02
#define __USB_JOB_SETUP_PACKET 0x04
#define __USB_JOB_REMOTE_WAKEUP 0x08
//#define __USB_JOB_IN_ISR 0x10
#define __USB_JOB_CONFIGURED 0x20
#define __USB_JOB_TIMEOUT 0x40
#define __USB_JOB_EP1_RX_DONE 0x80
//*************************************************************************
// USB Protocol Layer
//*************************************************************************
typedef struct __STRING_PRODUCT_DESCRIPTOR
{
unsigned short bLength;
unsigned short bDescriptorType;
unsigned short Product[14];
}STRING_PRODUCT_DESCRIPTOR;
typedef struct __STRING_MANUFACTURER_DESCRIPTOR
{
unsigned short bLength;
unsigned short bDescriptorType;
unsigned short Manufacturer[12];
}STRING_MANUFACTURER_DESCRIPTOR;
typedef struct __DEVICE_REQUEST
{
unsigned char bmRequestType;
unsigned char bRequest;
unsigned short wValue;
unsigned short wIndex;
unsigned short wLength;
}DEVICE_REQUEST;
typedef struct __DEVICE_DESCRIPTOR
{
UCHAR bLength;
UCHAR bDescriptorType;
USHORT bcdUSB;
UCHAR bDeviceClass;
UCHAR bDeviceSubClass;
UCHAR bDeviceProtocol;
UCHAR bMaxPacketSize0;
USHORT idVendor;
USHORT idProduct;
USHORT bcdDevice;
UCHAR iManufacturer;
UCHAR iProduct;
UCHAR iSerialNumber;
UCHAR bNumConfigurations;
}DEVICE_DESCRIPTOR;
typedef struct __ENDPOINT_DESCRIPTOR
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bEndpointAddress;
UCHAR bmAttributes;
USHORT wMaxPacketSize;
UCHAR bInterval;
}ENDPOINT_DESCRIPTOR;
typedef struct __CONFIGURATION_DESCRIPTOR
{
UCHAR bLength;
UCHAR bDescriptorType;
USHORT wTotalLength;
UCHAR bNumInterfaces;
UCHAR bConfigurationValue;
UCHAR iConfiguration;
UCHAR bmAttributes;
UCHAR MaxPower;
}CONFIGURATION_DESCRIPTOR;
typedef struct __INTERFACE_DESCRIPTOR
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bInterfaceNumber;
UCHAR bAlternateSetting;
UCHAR bNumEndpoints;
UCHAR bInterfaceClass;
UCHAR bInterfaceSubClass;
UCHAR bInterfaceProtocol;
UCHAR iInterface;
}INTERFACE_DESCRIPTOR;
typedef struct __CONFIG_DATA
{
CONFIGURATION_DESCRIPTOR stConfigDesc;
INTERFACE_DESCRIPTOR stInterfaceDesc;
ENDPOINT_DESCRIPTOR stEndpoint1In;
ENDPOINT_DESCRIPTOR stEndpoint1Out;
ENDPOINT_DESCRIPTOR stEndpoint2In;
ENDPOINT_DESCRIPTOR stEndpoint2Out;
}CONFIG_DATA;
void USB_Init(void);
void USB_Reset(void);
void USB_Run(void);
void USB_MgnRoutine(void); //USB(PDIUSBD12 包府甫 困茄 MainRoutine栏肺 main窃荐狼 while巩 加俊 馆靛矫 器窃且巴.
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -