ercircle 发表于 2025-8-1 12:19:13

STC-USB键盘之挂起/恢复中断响应及唤醒睡眠电脑的应用 - USB:USB-CDC虚拟串口/就是串口,一箭双雕之USB转双串口,[鼠标+键盘]的HID复合设备 国芯人工智能技术交流网站 - AI32位8051交流社区

关于STC8H8K64U的USB主动挂起 - USB:USB-CDC虚拟串口/就是串口,一箭双雕之USB转双串口,[鼠标+键盘]的HID复合设备 国芯人工智能技术交流网站 - AI32位8051交流社区

参考这两个帖子试了下,键盘范例可以触发挂起(外部供电,拔出USB,或电脑系统休眠),而U盘不行....,感觉和设备类型有关系
基于擎天柱开发板测试:



ercircle 发表于 3 天前



关于有效序列号iSerialNumber的判断标准:


USB设备的序列号是通过主机向USB设备获取USB设备的字符串描述符获取的,字符串的的索引存储在USB设备管理器中的iSerialNumber字段中,该字段的长度为一个字节,大小为0-255。
USB 设备描述符的 iSerialNumber 字段指示设备是否具有序列号以及该数字的存储位置,如下所示
    iSerialNumber == 0x00:USB 设备没有序列号。
    iSerialNumber!= 0x00:USB 设备具有序列号。 分配给 iSerialNumber 的值是序列号的字符串索引。
如果设备具有序列号,则序列号必须唯一标识同一设备的每个实例。
例如,如果两个设备描述符的“idVendor”idProduct”和“bcdDevice”字段的值相同,则 iSerialNumber字段必须不同,以便将一台设备与另一台设备区分开来。


Windows即插即用管理器要求 USB 序列号中的每个字节都有效。如果单个字节无效,Windows 会丢弃序列号,并将设备视为不具有序列号。 对于 USB 序列号,以下字节值无效:
·0x2C.(说明,该值的ASSIIC为逗号)
·小于0x20 的值。(说明,0x20该值的ASSIIC为空格)
·大于0x7F 的值。(说明,0x7f该值的ASSIIC为DEL)
必须为可见有有效字符。



https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=19874&pid=184371
页: 1 2 [3]
查看完整版本: 一些奇奇怪怪的USB问题记录