STM32制作USB键盘的问题

发布: 2010-1-31 15:43 | 作者: 020411 | 来源: StmFans思蜕盟 OPELC 自由电子联盟

不知除了我,还有人用STM32做USB键盘的没有,本人在做一个项目,需要用到模拟USB键盘,于是想到了STM32,谁知问题来了,正常的USB键盘插上去后PC会回复一个数据,可本人就是没有,试过完全复制通用键盘的报告描述符,还是不行。。。。难道库有问题?请高人指教,顺带由于此例网上还没有,,完成此项目后本人会将STM32的通用USB键盘源码开源。


2.JPG


1.JPG


3.JPG

020411 (2010-1-31 15:46:17)
DellUSB键盘的报告描述符:
0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)
    0x09, 0x06,                    // USAGE (Keyboard)
    0xa1, 0x01,                    // COLLECTION (Application)
    0x05, 0x07,                    //   USAGE_PAGE (Keyboard)
    0x19, 0xe0,                    //   USAGE_MINIMUM (Keyboard LeftControl)
    0x29, 0xe7,                    //   USAGE_MAXIMUM (Keyboard Right GUI)
    0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
    0x25, 0x01,                    //   LOGICAL_MAXIMUM (1)
    0x75, 0x01,                    //   REPORT_SIZE (1)
    0x95, 0x08,                    //   REPORT_COUNT (8)
    0x81, 0x02,                    //   INPUT (Data,Var,Abs)
    0x95, 0x01,                    //   REPORT_COUNT (1)
    0x75, 0x08,                    //   REPORT_SIZE (8)
    0x81, 0x01,                    //   INPUT (Cnst,Ary,Abs)
    0x95, 0x03,                    //   REPORT_COUNT (3)
    0x75, 0x01,                    //   REPORT_SIZE (1)
    0x05, 0x08,                    //   USAGE_PAGE (LEDs)
    0x19, 0x01,                    //   USAGE_MINIMUM (Num Lock)
    0x29, 0x03,                    //   USAGE_MAXIMUM (Scroll Lock)
    0x91, 0x02,                    //   OUTPUT (Data,Var,Abs)
    0x95, 0x01,                    //   REPORT_COUNT (1)
    0x75, 0x05,                    //   REPORT_SIZE (5)
    0x91, 0x01,                    //   OUTPUT (Cnst,Ary,Abs)
    0x95, 0x06,                    //   REPORT_COUNT (6)
    0x75, 0x08,                    //   REPORT_SIZE (8)
    0x15, 0x00,                    //   LOGICAL_MINIMUM (0),52
    0x26, 0xFF,
    0x00, 0x05,
    0x07, 0x19,
    0x00, 0x2A,
    0xFF, 0x00,
    0x81, 0x00,
    0xc0                           // END_COLLECTION
020411 (2010-1-31 15:48:15)
本人自己写的:
0x05, 0x0c,                    // USAGE_PAGE (Generic Cust)
    0x09, 0x01,                    // USAGE (Keyboard)
    0xa1, 0x01,                    // COLLECTION (Application)
    0x05, 0x07,                    //   USAGE_PAGE (Keyboard)
    0x19, 0x04,                    //   USAGE_MINIMUM (Keyboard a and A)
    0x29, 0x2c,                    //   USAGE_MAXIMUM (Keyboard Spacebar)
    0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
    0x25, 0x29,                    //   LOGICAL_MAXIMUM (41)
    0x75, 0x08,                    //   REPORT_SIZE (8)
    0x95, 0x01,                    //   REPORT_COUNT (1)
    0x81, 0x02,                     // INPUT (Data,Var,Abs)
    0x19, 0x00,                    //   USAGE_MINIMUM (Reserved (no event indicated))
    0x29, 0xe5,                    //   USAGE_MAXIMUM (Keyboard RightShift)
    0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
    0x25, 0x01,                    //   LOGICAL_MAXIMUM (1)
    0x75, 0x08,                    //   REPORT_SIZE (8)
    0x95, 0x01,                    //   REPORT_COUNT (1)
    0x81, 0x02,                    //   INPUT (Data,Var,Abs)
    0xc0                           // END_COLLECTION
binglin (2010-1-31 20:55:46)
学习了,谢谢
020411 (2010-2-01 09:41:23)
问题解决,但是遇到了怪现象,http://www.opelc.org/html/54/t-5754.html,正在解决
guoyin (2010-2-01 09:42:33)
你看看我这个程序,能不能解决你的问题
http://www.stmfans.com/bbs/viewthread.php?tid=5511
020411 (2010-2-01 09:55:29)
发现是 硬件失效,进入了硬件失效中断。。。。不知什么原因