can123dao 发表于 2013-10-14 10:07
我想问一下关于USB DEMO 里的Joystick_Send里面的Mouse_Buffer[4]做如何理解?
比如,我想将这个DEMO改成一 ...
在ST官网例程的Joystick Mouse Demo 中,使用游戏摇杆模拟鼠标。
Mouse_Buffer[4]是每次USB主机IN令牌来了之后,鼠标要上传到4字节数据。HID类中传输数据的格式(长度、每个字节的或每个位代表的意义)都是由report descriptor来描述的。比如这个例子里,在<usb_desc.c>中就有Joystick_ReportDescriptor的定义,从其中可以看到:
0x15, /*Logical Minimum(0)*/
0x00,
0x25, /*Logical Maximum(1)*/
0x01,
0x95, /*Report Count(3)*/
0x03,
0x75, /*Report Size(1)*/ 第一个字节的前三位分别代表button是否按下
0x01,
/* 24 */
0x81, /*Input(Variable)*/
0x02,
0x95, /*Report Count(1)*/
0x01,
0x75, /*Report Size(5)*/
0x05,
0x81, /*Input(Constant,Array)*/ 第一个字节的后面5位是填充位
0x01,
/* 40 */
0x15, /*Logical Minimum(-127)*/
0x81,
0x25, /*Logical Maximum(127)*/
0x7F,
0x75, /*Report Size(8)*/
0x08,
0x95, /*Report Count(3)*/ 第二、三、四字节分别表示x、y轴上的位移和滚轮信息
0x03,
有关report描述子的构造和详细解释,需要参照USB HID规范。 |