📄 chap9.h
字号:
#ifndef _chap9_h_
#define _chap9_h_
/**********************************
USB标准请求程序调用到的子程序
**********************************/
//保留子程序
void reserved(void);
//进入地址状态,禁止0除外的所有端点
void init_unconfig(void);
//配置处理,允许端点收发
void init_config(void);
//通过端点索引1发送数据(Data类型)
void single_transmit(unsigned char *buf,unsigned char len);
//通过端点索引1发送数据(CODE类型)
void code_transmit(unsigned char *pRomData,unsigned short len);
/**********************************
USB标准请求服务子程序
**********************************/
//获取状态
void get_status(void);
//清除特性
void clear_feature(void);
//设置特性
void set_feature(void);
//设置地址
void set_address(void);
//获取描述符
void get_descriptor(void);
//获取配置
void get_configuration(void);
//设置配置
void set_configuration(void);
//获取接口信息
void get_interface(void);
//设置接口
void set_interface(void);
//USB标准设备请求入口地址指针表
const void (*StandardDeviceRequest[])(void)=
{
get_status,
clear_feature,
reserved,
set_feature,
reserved,
set_address,
get_descriptor,
reserved,
get_configuration,
set_configuration,
get_interface,
set_interface,
reserved,
reserved,
reserved,
reserved
};
//设备描述符
const USB_DEVICE_DESCRIPTOR DeviceDescr=
{
sizeof(USB_DEVICE_DESCRIPTOR), //设备描述符长度,=12H
USB_DEVICE_DESCRIPTOR_TYPE, //设备描述符类型,=01H
0x0100,//0x0110, //协议版本,=1.10
USB_CLASS_CODE_TEST_CLASS_DEVICE, //0x00,//测试设备类型,=0DCH
0x00,
0x00, //设备子类,设备协议
EP0_PACKET_SIZE, //端点0最大数据包大小,=10H
0x0471, //PHILIPS公司的设备ID
0x0fff, //设备制造商定的产品ID
0x0100, //设备序列号
0x00,
0x00,
0x02, //索引
0x01 //可能配置数
};
//配置描述符
const USB_CONFIGURATION_DESCRIPTOR ConfigDescr=
{
sizeof(USB_CONFIGURATION_DESCRIPTOR), //配置描述符长度,=09H
USB_CONFIGURATION_DESCRIPTOR_TYPE, //配置描述符类型,=02H
CONFIG_DESCRIPTOR_LENGTH, //描述符总长度,=2EH
0x01, //只支持1个接口
0x01, //配置值
0x00, //字符串描述符指针(无)
0x80, //中线供电,支持远程唤醒
0xc8 //最大功耗(100mA)
};
//接口描述符
const USB_INTERFACE_DESCRIPTOR InterfaceDescr=
{
sizeof(USB_INTERFACE_DESCRIPTOR), //接口描述符长度,=09H
USB_INTERFACE_DESCRIPTOR_TYPE, //接口描述符类型,=04H
0x00, //接口数,只有1个
0x00, //可选配置,只有1个
NUM_ENDPOINTS, //除端点0的端点索引树木,=04H
USB_CLASS_CODE_TEST_CLASS_DEVICE, //USB_DEVICE_CLASS_STORAGE, //测试设备类型,=0DCH
USB_SUBCLASS_CODE_TEST_CLASS_D12, //SCSI 0x06,//之类代码,=0A0H
USB_PTOTOCL_CODE_TEST_CLASS_D12, //bulk only Transport0x50, //协议代码,=0B0H
0x00 //字符串描述符索引
};
//端点描述符
//端点1输入
const USB_ENDPOINT_DESCRIPTOR EP1_TXDescr=
{
sizeof(USB_ENDPOINT_DESCRIPTOR), //端点描述符长度,=07H
USB_ENDPOINT_DESCRIPTOR_TYPE, //端点描述符类型,=05H
0x81, //端点1IN
USB_ENDPOINT_TYPE_INTERRUPT, //中断传输,=03H
EP1_PACKET_SIZE, //端点最大包的大小=10H
10 //传输间隔,=10ms
};
//端点1输出
const USB_ENDPOINT_DESCRIPTOR EP1_RXDescr=
{
sizeof(USB_ENDPOINT_DESCRIPTOR), //端点描述符长度,=07H
USB_ENDPOINT_DESCRIPTOR_TYPE, //端点描述符类型,=05H
0x01, //端点1OUT
USB_ENDPOINT_TYPE_INTERRUPT, //中断传输,=03H
EP1_PACKET_SIZE, //端点最大包的大小,=10H
10 //传输间隔,=10ms
};
//端点2输入
const USB_ENDPOINT_DESCRIPTOR EP2_TXDescr=
{
sizeof(USB_ENDPOINT_DESCRIPTOR), //端点描述符长度,=07H
USB_ENDPOINT_DESCRIPTOR_TYPE, //端点描述符类型,=05H
0x82, //端点2IN
USB_ENDPOINT_TYPE_BULK, //批量传输,=02H
0x0040,//EP2_PACKET_SIZE, //端点最大包的大小,=40H
10 //批量传输时该设置无效
};
//端点2输出
const USB_ENDPOINT_DESCRIPTOR EP2_RXDescr=
{
sizeof(USB_ENDPOINT_DESCRIPTOR), //端点描述符长度,=07H
USB_ENDPOINT_DESCRIPTOR_TYPE, //端点描述符类型,=05H
0x02, //端点2OUT
0x02,//USB_ENDPOINT_TYPE_BULK, //批量传输,=02H
0x0040,//EP2_PACKET_SIZE, //端点最大包的大小,=40H
10 //批量传输时该设置无效
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -