你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32的USB HID实现键盘鼠标功能

[复制链接]
攻城狮Melo 发布时间:2023-4-2 13:53
由于在报告描述符中使用了两个Report ID,分别是0x01和0x02,前者是键盘的报告描述符的报告ID,后者是鼠标的报告ID,HID的键盘和鼠标发送的数据格式

根据文档编写键盘和鼠标的发送函数如下:
  1. typedef enum

  2.         {

  3.                 KEYBOARD        = 0x01,

  4.                 MOUSE                = 0x02,

  5.         }Device;

  6.         

  7.         #define None_Key        0x00

  8.         

  9.         typedef enum

  10.         {

  11.                 Left_Control        = 0x01,

  12.                 Left_Shift                = 0x02,

  13.                 Left_Alt                = 0x04,

  14.                 Left_GUI                = 0x08,

  15.                 Right_Control        = 0x10,

  16.                 Right_Shift                = 0x20,

  17.                 Right_Alt                = 0x40,

  18.                 Right_GUI                = 0x80,

  19.         }FunctionKey;

  20.         

  21.         typedef enum

  22.         {

  23.                 Left_Key                = 0x01,

  24.                 Right_Key                = 0x02,

  25.                 Mid_Kry                        = 0x04,

  26.         }MouseKey;



  27. extern u8 EP1BUSY;

  28. extern u8 HID_SendBuffer[9];



  29. void HID_Send(Device device)

  30. {

  31.         HID_SendBuffer[0] = (u8)device;

  32.         

  33.     /*copy mouse position info in ENDP1 Tx Packet Memory Area*/

  34.     UserToPMABufferCopy(HID_SendBuffer, GetEPTxAddr(ENDP1), 9);

  35.     /* enable endpoint for transmission */

  36.     SetEPTxValid(ENDP1);



  37.         while(EP1BUSY);

  38.         EP1BUSY = 1;



  39. }



  40. void SendKeyboardData(u8 ctrl_shift,u8 key)

  41. {

  42.         HID_SendBuffer[1] = ctrl_shift;

  43.         HID_SendBuffer[3] = key;

  44.         HID_Send(KEYBOARD);

  45. }



  46. void SendMouseData(u8 key,s8 x,s8 y)

  47. {

  48.         HID_SendBuffer[1] = key;

  49.         HID_SendBuffer[2] = (u8)x;

  50.         HID_SendBuffer[3] = (u8)y;

  51.         HID_Send(MOUSE);

  52. }
复制代码


————————————————
版权声明:哐哐哐 Quan
如有侵权请联系删除


收藏 评论0 发布时间:2023-4-2 13:53

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版