77范文网 - 专业文章范例文档资料分享平台

如何修改stm32的USB例程为自己所用(2)

来源:网络收集 时间:2021-09-24 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

/* USB Configuration Descriptor */

/* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */

const u8 Joystick_ConfigDescriptor[JOYSTICK_SIZ_CONFIG_DESC] =

{

//以下为配置描述符

0x09, /* bLength: Configuation Descriptor size */

USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */ JOYSTICK_SIZ_CONFIG_DESC,

/* wTotalLength: Bytes returned */

0x00,

0x01, /*bNumInterfaces: 1 interface*/

0x01, /*bConfigurationValue: Configuration value*/

0x00, /*iConfiguration: Index of string descriptor describing

the configuration*/

0xC0, /*bmAttributes: self powered */

0x32, /*MaxPower 100 mA: this current is used for detecting Vbus*/ //以下为接口描述符

/************** Descriptor of Joystick Mouse interface ****************/ /* 09 */

0x09, /*bLength: Interface Descriptor size*/

USB_INTERFACE_DESCRIPTOR_TYPE,/*bDescriptorType:

type*/

0x00, /*bInterfaceNumber: Number of Interface*/ Interface descriptor

如何修改stm32的USB例程为自己所用

0x00, /*bAlternateSetting: Alternate setting*/

0x02, /*bNumEndpoints*/

0x03, /*bInterfaceClass: HID*/

0x01, /*bInterfaceSubClass : 1=BOOT, 0=no boot*/

0x01, /*bInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/

0, /*iInterface: Index of string descriptor*/

//以下为HID描述符

/********************

********************/

/* 18 */

0x09, /*bLength: HID Descriptor size*/

HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/

0x00, /*bcdHID: HID Class Spec release number*/

0x01,

0x00, /*bCountryCode: Hardware target country*/

0x01, /*bNumDescriptors: Number of HID class descriptors to follow*/ 0x22, /*bDescriptorType*/

JOYSTICK_SIZ_REPORT_DESC,/*wItemLength: Total length of Report descriptor*/ 0x00,

//以下为输入端点1描述符

/********************

********************/

/* 27 */

0x07, /*bLength: Endpoint Descriptor size*/

USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/

0x81, /*bEndpointAddress: Endpoint Address (IN)*/

0x03, /*bmAttributes: Interrupt endpoint*/

0x08, /*wMaxPacketSize: 8 Byte max */

0x00,

0x20, /*bInterval: Polling Interval (32 ms)*/

//以下为输出端但1描述符

/* 34 */

0x07, /*bLength: Endpoint Descriptor size*/

USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/

0x01, /*bEndpointAddress: Endpoint Address (OUT)*/

0x03, /*bmAttributes: Interrupt endpoint*/

0x08, /*wMaxPacketSize: 8 Byte max */

0x00,

0x20, /*bInterval: Polling Interval (32 ms)*/

/* 41 */

}; Descriptor of Joystick Mouse endpoint Descriptor of Joystick Mouse HID

如何修改stm32的USB例程为自己所用

接下来,还需要修改报告描述符,报告描述符比较复杂,这里就不详述了,直接给出修改好的报告描述符如下:

const u8 Joystick_ReportDescriptor[JOYSTICK_SIZ_REPORT_DESC] =

{

0x05, 0x01, // USAGE_PAGE (Generic Desktop)

0x09, 0x06, // USAGE (Keyboard)

0xa1, 0x01, // COLLECTION (Application)

0x05, 0x07, // USAGE_PAGE (Keyboard/Keypad)

0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl)

0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI)

0x15, 0x00, // LOGICAL_MINIMUM (0)

0x25, 0x01, // LOGICAL_MAXIMUM (1)

0x95, 0x08, // REPORT_COUNT (8)

0x75, 0x01, // REPORT_SIZE (1)

0x81, 0x02, // INPUT (Data,Var,Abs)

0x95, 0x01, // REPORT_COUNT (1)

0x75, 0x08, // REPORT_SIZE (8)

0x81, 0x03, // INPUT (Cnst,Var,Abs)

0x95, 0x06, // REPORT_COUNT (6)

0x75, 0x08, // REPORT_SIZE (8)

0x25, 0xFF, // LOGICAL_MAXIMUM (255)

0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated))

0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application)

0x81, 0x00, // INPUT (Data,Ary,Abs)

0x25, 0x01, // LOGICAL_MAXIMUM (1)

0x95, 0x05, // REPORT_COUNT (5)

0x75, 0x01, // REPORT_SIZE (1)

0x05, 0x08, // USAGE_PAGE (LEDs)

0x19, 0x01, // USAGE_MINIMUM (Num Lock)

0x29, 0x02, // USAGE_MAXIMUM (Caps Lock)

0x91, 0x02, // OUTPUT (Data,Var,Abs)

0x95, 0x01, // REPORT_COUNT (1)

0x75, 0x06, // REPORT_SIZE (6)

0x91, 0x03, // OUTPUT (Cnst,Var,Abs)

0xc0 // END_COLLECTION

};

该报告描述符说明输入报告为8字节,第一字节为特殊键,用位图表示,第二字节保留,第三至第八字节为普通按键。我们将原来的摇杆功能改成键盘上的4个方向键,中键选择键为回车键,另外KEY2和KEY3分别做大写字母锁定键和数字锁锁定键。输出报告为1字节,其中最低两位分别为Num Lock灯和Caps Lock灯。

Joystick_StringLangID描述符不用修改,Joystick_StringVendor、

Joystick_StringProduct分别为厂商字符串和设备字符串,不改也可以,但是显示出来就是原来的内容,最好还是自己修改下。这里使用的是Unicode编码,可以直接使用圈圈以前写小程

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说公务员考试如何修改stm32的USB例程为自己所用(2)在线全文阅读。

如何修改stm32的USB例程为自己所用(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/gongwuyuan/1247488.html(转载请注明文章来源)

相关推荐:

Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: