基于STM32的USB程序开发笔记(5)
http://www.hkaco.com
0x01, // bConfigurationValue: Configuration value
0x00, // iConfiguration: Index of string descriptor describing the configuration
0xA0, // bmAttributes: bus powered // bit 4...0 : Reserved, set to 0
// bit 5 : Remote wakeup (1:yes) // bit 6 : Self power (1:yes) // bit 7 : Reserved, set to 1
0x32, // bMaxPower: this current is used for detecting Vbus = 100mA
// Descriptor of interface 0x09,
DESCRIPTOR_INTERFACE,
0x00, // bInterfaceNumber: Number of Interface 0x00, // bAlternateSetting: Alternate setting
0x02, // bNumEndpoints: Number of endpoints except EP0 0x00, // bInterfaceClass: 0x00, // bInterfaceSubClass: 0x00, // nInterfaceProtocol:
0x00, // iInterface: Index of string descriptor describing the interface
// Descriptor of endpoint1 OUT 0x07,
DESCRIPTOR_ENDPOINT,
0x01, // bEndpointAddress
// bit 3...0 : the endpoint number // bit 6...4 : reserved
// bit 7 : 0(OUT), 1(IN)
0x03, // bmAttributes
// bit 1...0 : Transfer type
// 00(CONTROL), 01(ISOCHRONOUS), 10(BULK), 11(INTERRUPT) // bit 3...2 : Synchronization type
// 00(No Synch), 01(Asynchronous), 10(Adaptive), 11(Synchronous) // bit 5...4 : Endpoint Usage type
// 00(data), 01(Feedback), 10(Implicit feedback data endpoint), 11(Reserved)
http://www.hkaco.com
// bit 7...6 : Reserved, must be zero
0x40, // packet size LSB 0x00, // packet size MSB
0x20, // polling interval time: 32ms
// Descriptor of endpoint2 IN 0x07,
DESCRIPTOR_ENDPOINT,
0x82, // bEndpointAddress
// bit 3...0 : the endpoint number // bit 6...4 : reserved
// bit 7 : 0(OUT), 1(IN)
0x03, // bmAttributes
// bit 1...0 : Transfer type
// 00(CONTROL), 01(ISOCHRONOUS), 10(BULK), 11(INTERRUPT) // bit 3...2 : Synchronization type
// 00(No Synch), 01(Asynchronous), 10(Adaptive), 11(Synchronous) // bit 5...4 : Endpoint Usage type // 00(data), 01(Feedback), 10(Implicit feedback data endpoint), 11(Reserved) // bit 7...6 : Reserved, must be zero
0x40, // packet size LSB 0x00, // packet size MSB
0x20 // polling interval time: 32ms };
字符串描述符:定义了与设备有关的一些信息,常见的为以下四种,如果有需要,同样可以定义自己的字符串描述符。
const unsigned char cbDescriptor_StringLangID[DESC_SIZE_STRING_LANGID] = {
DESC_SIZE_STRING_LANGID, // bLength
DESCRIPTOR_STRING, // bDescriptorType = String Descriptor
0x09, // LangID LSB:
0x04 // LangID MSB: 0x0409(U.S. English) };
const unsigned char cbDescriptor_StringVendor[DESC_SIZE_STRING_VENDOR] =
http://www.hkaco.com
{
DESC_SIZE_STRING_VENDOR, // bLength
DESCRIPTOR_STRING, // bDescriptorType = String Descriptor
// String: \
'L',0, 'a',0, 'B',0, 'i',0, 'X',0, 'i',0, 'a',0, 'o',0, 'X',0, 'i',0, 'a',0, 'o',0, 'X',0, 'i',0, 'n',0 };
const unsigned char cbDescriptor_StringProduct[DESC_SIZE_STRING_PRODUCT] = {
DESC_SIZE_STRING_PRODUCT, // bLength
DESCRIPTOR_STRING, // bDescriptorType = String Descriptor
// String: \
'S',0, 'T',0, 'M',0, '3',0, '2',0, ' ',0, 'e',0, 'z',0, 'U',0, 'S',0, 'B',0, '-',0, 'C',0, 'O',0, 'R',0, 'E',0, ' ',0, 'V',0, '1',0, '.',0, '0',0, '1',0 };
const unsigned char cbDescriptor_StringSerial[DESC_SIZE_STRING_SERIAL] = {
DESC_SIZE_STRING_SERIAL, // bLength
DESCRIPTOR_STRING, // bDescriptorType = String Descriptor
// String: \
'e',0, 'z',0, 'U',0, 'S',0, 'B',0, '-',0, 'C',0, 'O',0, 'R',0, 'E',0, ' ',0,
'D',0, 'e',0, 'm',0, 'o',0, ' ',0, '2',0, '0',0, '0',0, '8',0, '/',0, '1',0, '1',0, '/',0, '1',0, '8',0 };
了解这些描述符的用法以及作用,最好的方法的是编写自定义的USB上位机驱动以及应用程序,这样你可以深刻了解USB设备与主机间的数据交换方式以及实现手段,下篇将开始介绍USB上位机驱动以及应用程序的编写以及开发环境的建立,STM32 USB设备的固件程序如有什么疑问,请朋友们多花几分种时间留言、讨论,共同学习与进步。
第六篇:XP下USB驱动开发的初步准备工作
必须的先决条件:
1: XP DDK(Driver Development Kits),可从MS网站下载。(Windows 2000下请使用Windows 2000 DDK),具备后安装DDK,如果你觉得只需要利用DDK就可以开发驱动,那么接下来的内容完全可以不看,在这讨论的是利用DriverStudio的 DriverWinziard生成的驱动框架。因为纯粹利用DDK开发驱动将是项十分艰巨的工作,需要你了解太多的系统知识,开发全部基于C语言,而且底层驱动处理稍微不当,就容易让你系统直接挂了(WINDOWS著名的蓝屏)。DDK提
http://www.hkaco.com
供了一些驱动代码,有兴趣的朋友可以参考参考。
2: Compuware DriverStudio V3.2:Compuware出品,是进行驱动开发最常见的平台,他封装了大部分设备驱动所必须的基本框架,以C++形式生成VC6.0或者 VS2002、2003、2005工程,用户一般只需要对该工程进行一些修改就可以完成最终目的。
3:代码开发环境VC6.0,这个大家都知道
相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




