STM32 usb 游戏手柄

原文链接


EazyJoy

EazyJoy实现了具有灵活配置的USB HID游戏杆设备。 它基于STM32F103C8微控制器,最多支持8个模拟轴和12个数字输入(按钮)。

特征

EazyJoy允许选择您真正需要的操纵杆设备的配置。 您可以选择以下显示的任何输入:

  • 最多3轴操纵杆轴(X,Y和Z)
  • 最多3个线性轴
  • 油门轴
  • 舵轴
  • 最多12个数字输入(例如按钮)

默认管脚

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EVlvML9u-1589166116697)(https://a.radikal.ru/a29/1807/3b/911b58654ab7.jpg)]

由于STM32外设的架构,模拟通道(轴)被硬连线到A0-A7引脚,但是如果需要,可以重新映射数字引脚(按钮)。 对于重新映射按钮,请更改main.h文件中的相应定义。

轴的优先级

选择使用轴时,会根据轴优先级将它们映射到模拟通道(A0-A7)。 优先级较高的轴映射到编号较小的通道。 例如,如果启用了最高优先级的油门轴,则将其映射到A0通道。 如果禁用此轴,则优先级最高的启用轴将映射到A0。

轴优先级从最高到最低:

  • 节气门轴

  • 舵轴

  • 操纵杆X轴

  • 操纵杆Y轴

  • 操纵杆Z轴

  • 次级线性轴1(Rx)

  • 次级线性轴2(Ry)

  • 次级线性轴3(Rz)

注意

如果不使用操纵杆X轴,则无法映射操纵杆Y轴。 如果要使用“操纵杆”或“线性轴”组中的唯一轴,它将始终分别是X轴或Rx轴。 没有X,Y和Rx,Ry也无法映射Z和Rz轴。


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uoNrQn44-1589166116706)(https://s1.ax1x.com/2020/05/09/Ylppt0.png)]

STM32F103C8 Serial(UART) to USB HID Keyboard Mouse Joystick 串口 转 USB键盘;鼠标;手柄 (1) 使用Composite Device 组合(复合)设备 (1.1) 1个Device -> 1个 Configuation -> 3个Interfance (Keyboard & Mouse & Joystick) (1.2) 支持BIOS模式中的操作(使用HID boot模式) 以便兼容在计算器中设定BIOS : (1.2.1) Keyboard Interfance -> HID (boot mode) -> 2个Endpoint(IN_0x81 & OUT_0x01) -> KeyboardReportDescriptor(不使用Report ID) (1.2.2) Mouse Interfance -> HID (boot mode) -> 1个Endpoint(IN_0x82) -> MouseReportDescriptor(不使用Report ID) (1.3) 支持Windows模式中的操作(使用Report ID) : (1.3.1) Multimedia Keyboard Interfance -> HID -> 1个Endpoint(IN_0x85) -> KeyboardReportDescriptor(使用Report ID) (1.3.1.1) Report ID (1) : HID Usage Page 0x0C, MediaKey (1.3.1.2) Report ID (2) : HID Usage Page 0x01, PowerControl (1.3.2) Mouse Interfance -> HID (boot mode) -> 1个Endpoint(IN_0x84) -> MouseReportDescriptor(使用Report ID) (1.3.2.1) Report ID (1) : 相对坐标 (-32768 ~ 32767) (1.3.2.2) Report ID (2) : 绝对坐标 (0 ~ 2048) (1.4) 支持反馈Keyboard_LED灯号: All Off; Num Lock; Caps Lock; Scroll Lock; Compose; Kana (1.5) Joystick Interfance -> HID -> 1个Endpoint(IN_0x83) -> JoyStickReportDescriptor (1.7) 支持GPIO命令, 可控制 12个GPIO 0/1 (hi/low)输出 (1.8) 支持Hardware或Software 插拔(Connect/Disconnect)命令 (1.9) 支持Software Reset命令 (2) 串口接收 命令 (2.1) UART协议: 115200, n, 8, 1 (2.2) 1帧发送字符串格式, 以 '{'开始, '}'结束 ','分隔 共10个10进制数字 例如: {1,2,3,4,5,6,7,8,9,10} (2.3) 第1位 区分 Keyboard(128) 或是 Mouse(64) 或是 Joystick(32) 或是 Control(32) 命令 Control_cmd = 0x10, Joystick_cmd = 0x20, Mouse_cmd = 0x40, MouseHold_cmd = 0x41, AbsMouse_cmd = 0x42, AbsMouseHold_cmd= 0x43, Keyboard_cmd = 0x80, KeyboardHold_cmd= 0x81, MediaKey_cmd = 0x82, MediaKeyHold_cmd= 0x83, Switch_cmd = 0xC0, SwitchHold_cmd = 0xC1 例如: {16, 0,0,0,0,0,0,0,0} --- 发送Control命令 {32, 0,0,0,0,0,0,0,0} --- 发送Joystick命令 {64, 0,0,0,0,0,0,0,0} --- 发送Mouse命令(相对坐标) {65, 0,0,0,0,0,0,0,0} --- 发送Mouse命令(相对坐标)(按住不放) {66, 0,0,0,0,0,0,0,0} --- 发送WinMouse命令(相对坐标/绝对坐标) {67, 0,0,0,0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值