EDN首页   博客首页

日志档案

发表于 2008-7-30 15:00:51

51

标签: 万利  STM32学习板  实现USB  多媒体键盘  

在万利的STM32学习板上实现USB多媒体键盘

   圈圈通过对原来的USB摇杆实例进行修改,做了一个
USB HID多媒体键盘,可以调节音量、启动Windows Media
播放器、停止/暂停播放、打开网页、打开计算器等等功能。
由于摇杆和多媒体键盘都是HID设备,因而改动的工作量很
少,只需要修改一下VID、PID,字符串描述符、报告描述
符、返回报告的格式即可。
  板上各按键的功能分配如下:摇杆往上音量增加;摇杆
往下音量降低;摇杆往左静音;摇杆往右启动Windows
Media播放器;摇杆中键(确认键)为播放/暂停(对千千
静听等播放器也有效);按键KEY2为打开网页;按键KEY3
为打开计算器。
   从这里下载整个代码包:rar
下载该压缩包,解压到Manley\EKBoard\EKSTM32F\
USBDemo(8M osc)\USBDemo\USBLib\demos目录下,
然后编译,烧写调试即可。
    运行后可以看到弹出的新硬件,以及设备管理器
中的设备,一个为HID设备,一个为标准用户控制设备,
如下图所示:

点击看大图


报告描述符的代码如下:

const u8 ReportDescriptor[SIZ_REPORT_DESC] =
{
 0x05, 0x0c, // USAGE_PAGE (Consumer Page)
 0x09, 0x01, // USAGE (Consumer Control)
 0xa1, 0x01, // COLLECTION (Application)
 0x09, 0xea, //   USAGE (Volume Decrement)
 0x09, 0xe9, //   USAGE (Volume Increment)
 0x09, 0xe2, //   USAGE (Mute)
 0x09, 0xcd, //   USAGE (Play/Pause)
 0x0a, 0x83, 0x01, //USAGE (Windows Media Player(0x183))
 0x0a, 0x23, 0x02, //USAGE (AC Home(0x0223))
 0x0a, 0x92, 0x01, //USAGE (AL Calculator(0x192))
 0x15, 0x00, //     LOGICAL_MINIMUM (0)
 0x25, 0x01, //     LOGICAL_MAXIMUM (1)
 0x95, 0x07, //     REPORT_COUNT (7)
 0x75, 0x01, //     REPORT_SIZE (1)
 0x81, 0x02, //     INPUT (Data,Var,Abs)
 0x75, 0x01, //     REPORT_SIZE (1)
 0x95, 0x01, //     REPORT_COUNT (1)
 0x81, 0x03, //     INPUT (Cnst,Var,Abs)
 0xc0        // END_COLLECTION
}; /* ReportDescriptor */

 

怎样?好玩吧?记得给圈圈投票哦~~~点左上角那个“顶一下”,谢谢了~~~

系统分类: 单片机   |   用户分类: STM32   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(4741)    回复(12)  

投一票您将和博主都有获奖机会!

  • eeyrw

    2008-7-30 17:27:38

    顶个~~

  • computer00

    2008-7-30 22:43:51

    谢谢帮顶~~~~

  • kaiserempire

    2008-7-31 17:01:19

    顶过了哈

  • computer00

    2008-8-1 1:16:16

    恩,好的,谢过。

  • magzza

    2008-8-2 13:13:44

    试过了,很有趣~~帮你顶上

  • yujianchen13

    2008-8-26 12:27:59

    谢谢!顶一下!!

  • wangxing

    2008-8-26 15:54:54

    真是不错哦!! 00加油!!!

  • yyh2002steel2006

    2008-9-16 21:49:29

    先顶一下.想在这里问个问题,我在调万利那个USB虚拟COM程序,驱动装上了,也显示COM端口了,但超级终端什么都没显示,是什么原因啊?圈圈兄

  • computer00

    2008-9-17 0:16:31

    应该要往串口(板上的串口)发送数据,才有显示吧。

  • yyh2002steel2006

    2008-9-17 9:25:20

    怎么操作啊?有空的话能详细解释一下么,程序我都还没看懂,我再看看

  • computer00

    2008-9-17 13:00:55

    既然是USB转串口,那最终应该要有一个串口吧?你往那个串口发送数据,就会显示在超级终端上了。就像你电脑上的串口一样,你发数据给它,打开超级终端也是没得显示的。

  • yiminghua

    2008-10-30 10:43:20

    谢谢圈圈