STM32的USB键盘及鼠标例程
据域是独立的,即第一个8bit表示X轴,第二个8bit表示
//Y轴,第三个8bit表示滚轮。Rel表示这些值是相对值。
0x81, 0x06, // INPUT (Data,Var,Rel)
//下面这两个主条目用来关闭前面的集合用。
//我们开了两个集合,所以要关两次。bSize为0,所以后面没数据。
0xc0, // END_COLLECTION
0xc0 // END_COLLECTION
//以下注释不包括第一字节报告ID。
//通过上面的报告描述符的定义,我们知道返回的输入报告具有4字节。
//第一字节的低3位用来表示按键是否按下的,高5位为常数0,无用。
//第二字节表示X轴改的变量,第三字节表示Y轴的改变量,第四字节表示
//滚轮的改变量。我们在中断端点1中应该要按照上面的格式返回实际的
//鼠标数据。
};
// USB String Descriptors
const u8 HID_StringLangID[HID_SIZE_STRING_LANGID]=
{
HID_SIZE_STRING_LANGID,
USB_STRING_DESCRIPTOR_TYPE,
0x09,
0x04
};
const u8 HID_StringVendor[HID_SIZE_STRING_VENDOR]=
{
HID_SIZE_STRING_VENDOR,
USB_STRING_DESCRIPTOR_TYPE,
'S', 0, 'T', 0, 'M', 0, 'i', 0, 'c', 0, 'r', 0, 'o', 0, 'e', 0,
'l', 0, 'e', 0, 'c', 0, 't', 0, 'r', 0, 'o', 0, 'n', 0, 'i', 0,
'c', 0, 's', 0
};
const u8 HID_StringProduct[HID_SIZE_STRING_PRODUCT] =
{
HID_SIZE_STRING_PRODUCT, /* bLength */
USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
0x34, 0x6c, //水
0x62, 0x97, //面
0x4b, 0x4e, //之
0x0b, 0x4e, //下
0x84, 0x76, //的
0x55, 0x00, //U
0x53, 0x00, //S
0x42, 0x00, //B
0x4b, 0x6d, //测
0xd5, 0x8b, //试
};
u8 HID_StringSerial[HID_SIZE_STRING_SERIAL] =
{
HID_SIZE_STRING_SERIAL, /* bLength */
USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
0x73, 0x00, //s
0x6e, 0x00, //n
0x69, 0x00, //i
0x63, 0x00, //c
0x5f, 0x00, //_
0x6b, 0x00, //k
0x84, 0x76, //的
0x55, 0x00, //U
0x53, 0x00, //S
0x42, 0x00, //B
0x2e, 0x95, //键
0xd8, 0x76, //盘
};
- 用单片机pic16f877a实现鼠标数据的采集(12-03)
- 基于单片机的光电鼠标传感器带速度精密测量及其控制系统(11-11)
- MPU6050和STM32L152的微功耗三维无线鼠标设计(09-12)
- 分析USB鼠标造成电脑死机的原因(09-06)
- 基于USB的无线触摸鼠标板的设计方法(08-06)
- linux中如何使用微软鼠标的第4、5键(03-14)