日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]該文檔使用USB固件庫(kù),在其基礎(chǔ)上進(jìn)行了自己的定制,完成了一個(gè)USB-HID設(shè)備,首先是usb_desc.c文件,里面存放了usb各種描述符的存在#include "usb_desc.h"//usb標(biāo)準(zhǔn)設(shè)備描述符const u8 DinkUsbDeviceDescriptor[DINK_USB

該文檔使用USB固件庫(kù),在其基礎(chǔ)上進(jìn)行了自己的定制,完成了一個(gè)USB-HID設(shè)備,首先是usb_desc.c文件,里面存放了usb各種描述符的存在

#include "usb_desc.h"

//usb標(biāo)準(zhǔn)設(shè)備描述符

const u8 DinkUsbDeviceDescriptor[DINK_USB_SIZ_DEVICE_DESC] = {

USB_DEVICE_DESC_SIZE, //bLength字段。設(shè)備描述符的長(zhǎng)度為18(0x12)字節(jié)

USB_DEVICE_DESCRIPTOR_TYPE, //bDescriptorType字段。設(shè)備描述符的編號(hào)為0x01

WBVAL(0x0200), //bcdUSB字段。這里設(shè)置版本為USB1.1,即0x0110。

0x00, //bDeviceClass字段。我們不在設(shè)備描述符中定義設(shè)備類,

0x00, //bDeviceSubClass字段。bDeviceClass字段為0時(shí),該字段也為0。

0x00, //bDeviceProtocol字段。bDeviceClass字段為0時(shí),該字段也為0。

0x40, //bMaxPacketSize0字段。端點(diǎn)0的最大包長(zhǎng)度。

WBVAL(0x7777), //idVender字段。廠商ID號(hào),我們這里取0x8888,僅供實(shí)驗(yàn)用。

WBVAL(0x8888), //idProduct字段。產(chǎn)品ID號(hào),由于是第一個(gè)實(shí)驗(yàn),我們這里取0x0001。。

WBVAL(0x0100), // 設(shè)備的版本

0x01, //iManufacturer字段。廠商字符串的索引值,為了方便記憶和管理

0x02, //iProduct字段。產(chǎn)品字符串的索引值。剛剛用了1,這里就取2吧。

0x03, //iSerialNumber字段。設(shè)備的序列號(hào)字符串索引值。

0x01 //bNumConfigurations字段。該設(shè)備所具有的配置數(shù)。

};

//USB報(bào)告描述符的定義

const u8 HID_ReportDescriptor[]=

{

0x06,0xA0,0xFF,//用法頁(yè)(FFA0h, vendor defined)

0x09, 0x01,//用法(vendor defined)

0xA1, 0x01,//集合(Application)

0x09, 0x02 ,//用法(vendor defined)

0xA1, 0x00,//集合(Physical)

0x06,0xA1,0xFF,//用法頁(yè)(vendor defined)

//輸入報(bào)告

0x09, 0x03 ,//用法(vendor defined)

0x09, 0x04,//用法(vendor defined)

0x15, 0x80,//邏輯最小值(0x80 or -128)

0x25, 0x7F,//邏輯最大值(0x7F or 127)

0x35, 0x00,//物理最小值(0)

0x45,0xFF,//物理最大值(255)

0x75, 0x08,//報(bào)告長(zhǎng)度Report size (8位)

0x95, 0x40,//報(bào)告數(shù)值(64 fields)

0x81, 0x02,//輸入(data, variable, absolute)

//輸出報(bào)告

0x09, 0x05,//用法(vendor defined)

0x09, 0x06,//用法(vendor defined)

0x15, 0x80,//邏輯最小值(0x80 or -128)

0x25, 0x7F,//邏輯最大值(0x7F or 127)

0x35, 0x00,//物理最小值(0)

0x45,0xFF,//物理最大值(255)

0x75,0x08,//報(bào)告長(zhǎng)度(8位)

0x95, 0x40,//報(bào)告數(shù)值(64 fields)

0x91, 0x02,//輸出(data, variable, absolute)

0xC0,//集合結(jié)束(Physical)

0xC0//集合結(jié)束(Application)

};

//通過上面的報(bào)告描述符的定義,我們知道返回的輸入報(bào)告具有8字節(jié)。

//輸出報(bào)告也有64字節(jié)。至于這64字節(jié)的數(shù)據(jù)是干什么用的,就要由用戶

//自己來決定了。

///////////////////////////報(bào)告描述符完畢////////////////////////////

//usb配置描述符

const u8 DinkUsbConfigDescriptor[DINK_USB_SIZ_CONFIG_DESC] = {

/***************配置描述符***********************/

USB_CONFIGUARTION_DESC_SIZE, //bLength字段。配置描述符的長(zhǎng)度為9字節(jié)。

USB_CONFIGURATION_DESCRIPTOR_TYPE, //bDescriptorType字段。配置描述符編號(hào)為0x02。

//wTotalLength字段。配置描述符集合的總長(zhǎng)度,

//包括配置描述符本身、接口描述符、類描述符、端點(diǎn)描述符等。

WBVAL(

USB_CONFIGUARTION_DESC_SIZE + //配置描述符

USB_INTERFACE_DESC_SIZE + //接口1描述符

9 + //hid描述符

USB_ENDPOINT_DESC_SIZE + //端點(diǎn)描述符

USB_ENDPOINT_DESC_SIZE //端點(diǎn)描述符

),

0x01, //bNumInterfaces字段。該配置包含的接口數(shù),只有一個(gè)接口。

0x01, //bConfiguration字段。該配置的值為1。

0x00, //iConfigurationz字段,該配置的字符串索引。這里沒有,為0。

USB_CONFIG_BUS_POWERED , //bmAttributes字段,該設(shè)備的屬性

USB_CONFIG_POWER_MA(500), //bMaxPower字段,該設(shè)備需要的最大電流量

/*********************第一個(gè)接口描述符,hid設(shè)備**********************/

USB_INTERFACE_DESC_SIZE, //bLength字段。接口描述符的長(zhǎng)度為9字節(jié)。

USB_INTERFACE_DESCRIPTOR_TYPE, //bDescriptorType字段。接口描述符的編號(hào)為0x04。

0x00, //bInterfaceNumber字段。該接口的編號(hào),第一個(gè)接口,編號(hào)為0。

0x00, //bAlternateSetting字段。該接口的備用編號(hào),為0。

0x02, //bNumEndpoints字段。非0端點(diǎn)的數(shù)目。該接口有2個(gè)批量端點(diǎn)

USB_DEVICE_CLASS_HUMAN_INTERFACE, //bInterfaceClass字段。該接口所使用的類。大容量存儲(chǔ)設(shè)備接口類的代碼為0x08。,

0x00, //bInterfaceSubClass字段。該接口所使用的子類。在HID1.1協(xié)議中,

//只規(guī)定了一種子類:支持BIOS引導(dǎo)啟動(dòng)的子類。

//USB鍵盤、鼠標(biāo)屬于該子類,子類代碼為0x01。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉