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

📄 chap9.h

📁 AVR单片机控制的PDIUSBD12原程序
💻 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 + -