You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于tinyusb库中TUD_CONFIG/HID_DESCRIPTOR宏参数使用的咨询

解析tinyusb的TUD_CONFIG_DESCRIPTOR和TUD_HID_DESCRIPTOR宏参数

下面分别拆解两个宏的参数含义,并给出实际使用示例:

一、TUD_CONFIG_DESCRIPTOR 参数说明

这个宏用于生成USB配置描述符,参数对应USB规范中配置描述符的字段:

  • config_num:配置编号,通常从1开始(USB配置ID不允许为0)
  • _itfcount:当前配置包含的接口总数,比如单HID设备填1
  • _stridx:配置对应的字符串描述符索引,0表示无配套字符串,有自定义字符串则填对应索引值
  • _total_len:整个配置描述符集合的总字节数(包含配置、接口、HID、端点等所有属于该配置的描述符),直接用sizeof(配置描述符数组)即可
  • _attribute:配置属性,可选值:
    • 0:总线供电
    • TUSB_DESC_CONFIG_ATT_SELF_POWERED:自供电
    • TUSB_DESC_CONFIG_ATT_REMOTE_WAKEUP:支持远程唤醒,可与自供电属性按位或(TUSB_DESC_CONFIG_ATT_SELF_POWERED | TUSB_DESC_CONFIG_ATT_REMOTE_WAKEUP)
  • _power_ma:设备所需总线供电电流(单位mA),宏会自动除以2转换为USB描述符要求的2mA单位

二、TUD_HID_DESCRIPTOR 参数说明

这个宏会一次性生成接口描述符、HID描述符、IN端点描述符三个部分,参数对应三个描述符的字段:

  • _itfnum:接口编号,从0开始递增(第一个接口填0,多接口依次+1)
  • _stridx:接口对应的字符串描述符索引,0表示无配套字符串
  • _boot_protocol:是否启用HID引导协议:
    • 0:使用报告协议(自定义HID设备用这个)
    • 1:使用引导协议(标准键盘、鼠标等设备用这个)
  • _report_desc_len:HID报告描述符的总字节数,用sizeof(报告描述符数组)即可
  • _epin:IN端点地址,格式为0x8N(N为端点号,最高位1表示IN方向),比如端点1填0x81
  • _epsize:IN端点的最大包大小,需符合USB规范:低速设备最大8字节,全速最大64字节,高速最大512字节
  • _ep_interval:IN端点的轮询间隔(单位ms),低速设备最小10ms,全速最小1ms,高速最小1ms

三、完整使用示例

// 自定义HID报告描述符(示例:3字节输入报告)
uint8_t const hid_report_desc[] = {
  0x06, 0x00, 0xFF,  // 自定义使用页
  0x09, 0x01,        // 自定义使用ID
  0xA1, 0x01,        // 集合:应用
  0x09, 0x02,        // 自定义输入报告ID
  0x15, 0x00,        // 逻辑最小值0
  0x26, 0xFF, 0x00,  // 逻辑最大值255
  0x75, 0x08,        // 报告大小:8位
  0x95, 0x03,        // 报告计数:3个字节
  0x81, 0x02,        // 输入:数据、变量、绝对
  0xC0               // 结束集合
};

// USB配置描述符数组
uint8_t const desc_configuration[] = {
  // 配置描述符:配置1,1个接口,无字符串,总长度为数组大小,总线供电,需100mA
  TUD_CONFIG_DESCRIPTOR(1, 1, 0, sizeof(desc_configuration), 0, 100),
  
  // HID相关描述符:接口0,无字符串,报告协议,报告描述符长度为数组大小,IN端点0x81,包大小8,轮询间隔1ms
  TUD_HID_DESCRIPTOR(0, 0, 0, sizeof(hid_report_desc), 0x81, 8, 1)
};

内容的提问来源于stack exchange,提问作者mehbstnc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 21:45:41