📄 usb.h
字号:
#define SETUP_RECEIVED_MASK (1 << SETUP_RECEIVED)
#define IN_RECEIVED_MASK (1 << IN_RECEIVED)
#define OUT_RECEIVED_MASK (1 << OUT_RECEIVED)
#define DATAVALID 0x40
#define COUNT_MASK 0x0F
/********************************************************************************/
/* 定义标准的设备描述符结构 */
/********************************************************************************/
typedef struct _descript_device
{ unsigned char length; //* 设备描述符的字节数大小
unsigned char desciptor_type; //* 设备描述符类型编号
unsigned char usb_version_lo; //* USB版本号
unsigned char usb_version_hi;
unsigned char device_class; //* USB分配的设备类代码
unsigned char device_subclass; //* USB分配的子类代码
unsigned char device_protocol; //* USB分配的设备协议代码
unsigned char max_packet_size; //* 端点0的最大包大小
unsigned char vendor_lo; //* 厂商编号
unsigned char vendor_hi;
unsigned char product_bcd_lo; //* 产品编号
unsigned char product_bcd_hi;
unsigned char device_bcd_lo; //* 设备出厂编号
unsigned char device_bcd_hi;
unsigned char manufacturer; //* 设备厂商字符串的索引
unsigned char product_index; //* 描述产品字符串的索引
unsigned char serial_index; //* 描述设备序列号字符串的索引
unsigned char configure_number; //* 可能的配置数量
}st_descript_device;
/********************************************************************************/
/* 定义标准的配置描述符结构 */
/********************************************************************************/
typedef struct _descript_configure
{ unsigned char length; //* 配置描述符的字节数大小
unsigned char desciptor_type; //* 配置描述符类型编号
unsigned char total_length_lo; //* 此配置返回的所有数据大小
unsigned char total_length_hi;
unsigned char number_interface; //* 此配置所支持的接口数量
unsigned char configure_value; //* Set_Configuration命令所需要的参数值
unsigned char configure_index; //* 描述该配置的字符串的索引值
unsigned char attributes; //* 供电模式的选择
unsigned char max_power; //* 设备从总线提取的最大电流
}st_descript_configure;
/********************************************************************************/
/* 定义标准的接口描述符结构 */
/********************************************************************************/
typedef struct _descript_interface
{ unsigned char length; //* 接口描述符的字节数大小
unsigned char desciptor_type; //* 接口描述符的类型编号
unsigned char interface_code; //* 该接口的编号
unsigned char alternate_setting; //* 备用的接口描述符编号
unsigned char number_endpoints; //* 该接口使用的端点数,不包括端点0
unsigned char interface_class; //* 接口类型
unsigned char interface_subclass; //* 接口子类型
unsigned char interface_protocol; //* 接口遵循的协议
unsigned char interface_index; //* 描述该接口的字符串索引值
}st_descript_interface;
/********************************************************************************/
/* 定义标准的端点描述符结构 */
/********************************************************************************/
typedef struct _descript_endpoint
{ unsigned char length; //* 端点描述符字节数大小
unsigned char desciptor_type; //* 端点描述符类型编号
unsigned char endpoint_address; //* 端点地址及输入输出属性
unsigned char attributes; //* 端点的传输类型属性
unsigned char max_packet_lo; //* 端点收、发的最大包大小
unsigned char max_packet_hi;
unsigned char interval; //* 主机查询端点的时间间隔
}st_descript_endpoint;
/********************************************************************************/
/* HID描述符中的下级描述符号 */
/********************************************************************************/
typedef struct _desc_subhid
{ unsigned char desciptor_type; //* 下级描述符的类型编号
unsigned char descriptor_length_lo; //* 下级描述符的长度
unsigned char descriptor_length_hi; //* 下级描述符的长度
}st_desc_subhid;
/********************************************************************************/
/* 定义HID描述符结构 */
/********************************************************************************/
typedef struct _descript_hid
{ unsigned char length; //* HID描述符字节数大小
unsigned char desciptor_type; //* 类型
unsigned char HID_bcd_lo; //* 版本号低字节
unsigned char HID_bcd_hi; //* 版本号高字节
unsigned char country_code; //* 国家代码
unsigned char number_descriptors; //* 描述符个数
st_desc_subhid HID_subdescriptor[NUM_SUB_DESCRIPTORS];
}st_descript_hid;
/********************************************************************************/
/* 定义配置/接口/端点等描述符结构体/ */
/********************************************************************************/
typedef struct _all_confiure
{ st_descript_configure descriptor_configuration;
st_descript_interface descriptor_interface;
st_descript_hid descriptor_hid;
st_descript_endpoint descriptor_endpoint[ENDPOINT_NUMBER];
}st_all_confiure;
/********************************************************************************/
/* 字符串描述符结构 */
/********************************************************************************/
typedef struct _descript_string
{ unsigned char length; //* 字符串描述符的字节数大小
unsigned char desciptor_type; //* 字符串描述符类型编号
unsigned char string[36]; //* UNICODE编码的字符串
}st_descript_string;
/********************************************************************************/
/* USB的发送缓冲区结构 */
/********************************************************************************/
typedef struct
{ const char * cdata; //* pointer to the data
signed char * mdata; //* pointer to the data
signed char length; //* length of data remaining to be returned
signed char cflag; //* 判断是ROM数据还是RAM数据标记,ROM=0x1
}st_usb_transmit;
extern st_usb_transmit usb_transmit;
extern unsigned char ctrl_logic_bit;
void usb_pro_setup_request(void);
void usb_pro_in_request(void);
void usb_main_tasking(void);
void usb_ret_initialize(void);
void usb_main_process(void);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -