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

【我爱DIY】基于stm32f103c8t6+mpu9250的姿态解算单元

[复制链接]
Stm32McuLover 发布时间:2017-8-15 19:37

. c2 G5 x: p! o+ f4 X. T" ]# L. u- K1 W. R

" S. p( y. X% _7 G- h- ]4 \stm32cubemx越来越方便了,之前用nucleo-f767做个了usb复合设备,键盘、鼠标、游戏摇杆的复合体https://www.stmcu.org.cn/module/forum/thread-610675-1-1.html,可以模拟多个设备,这样做个usb键盘就可以全键无冲了,usb协议设计之初坑爹了 一把,导致一般的usb键盘无法做到全键无冲。
# s+ T; O& s" C: Y
" n3 Z' \% f* c6 N* _' H别问我为什么要同时按那么多按键' U# ]% v9 Y& W

' G+ p* q( T6 n  b- knucleo的st-link关键时刻很给力,手头一时没有其他的仿真器。8 s4 G& D! s$ @. F4 E* ~- }" j

: r5 c# |# q6 _* e) ~3 Q% Z! k IMG_20170815_192251_HHT.jpg
- L5 r  @& {) c8 n8 O; S% u9 N8 r6 V$ p0 r! R2 n5 M! g( _

4 |, s# U! G$ u# q0 x这个家伙可不便宜,那个邮票空的是92大洋的mpu9250模块,模块集成了姿态解算,彻底解决了Yaw漂移问题,通过串口输出,arduino也可方便的连接了。4 ^' [  z! n8 P9 F% v

( H0 ^! \: b* c/ U$ \+ W' ?. Z6 ~7 {配置就很简单了,把usb配成hid设备。自己在usbd_custom_hid_if.c加个报告描述符,告诉电脑你是啥。8 A9 e# \2 b+ i4 o, G5 S' ^
! R* r' n1 M9 ~* f' A4 z% j
上个usb键盘的报告:
# N, X1 S* g! S% l% S& N
  1. 0x05, 0x01, // USAGE_PAGE (Generic Desktop)5 e* ~" |, J  T& [1 o
  2. 0x09, 0x06, // USAGE (Keyboard). U: u) f) ^% K8 X, E) s
  3. 0xa1, 0x01, // COLLECTION (Application)- C7 j6 O# a# K6 D+ o" ]; B" D9 X$ ]
  4. 0x05, 0x07, //     USAGE_PAGE (Keyboard/Keypad)% s. S6 E  o6 {/ x6 A
  5. 0x19, 0xe0, //     USAGE_MINIMUM (Keyboard LeftControl)4 J  m" f' d2 U) D( p! L
  6. 0x29, 0xe7, //     USAGE_MAXIMUM (Keyboard Right GUI)
    % W+ R9 w3 W4 {9 S! |  A/ U
  7. 0x15, 0x00, //     LOGICAL_MINIMUM (0)
    5 V2 f/ x; E% ?4 Z# j: R
  8. 0x25, 0x01, //     LOGICAL_MAXIMUM (1)3 P! l, i, r- ]. i) U2 u3 L, F
  9. 0x95, 0x08, //     REPORT_COUNT (8)- I. [! g9 e: ?1 U( s' d
  10. 0x75, 0x01, //     REPORT_SIZE (1)/ V* X* u0 y% h  o+ a1 Y3 q& x
  11. 0x81, 0x02, //     INPUT (Data,Var,Abs)& n& h1 ~" L7 y4 \' A7 u
  12. 0x95, 0x01, //     REPORT_COUNT (1)2 j9 X2 p0 r7 ^0 ?. p: K' g
  13. 0x75, 0x08, //     REPORT_SIZE (8)0 Q7 `0 _( b* Q+ W% @& r0 P0 ^
  14. 0x81, 0x03, //     INPUT (Cnst,Var,Abs)
    : _4 W# A' i9 Z; ]4 n5 I
  15. 0x95, 0x06, //   REPORT_COUNT (6)
    ; ?+ s5 P% g$ V7 k% w" v
  16. 0x75, 0x08, //   REPORT_SIZE (8)# Y7 t; b" w6 w& b( S; U8 G. a
  17. 0x25, 0xFF, //   LOGICAL_MAXIMUM (255)3 V8 k5 \; s6 t% @* ^
  18. 0x19, 0x00, //   USAGE_MINIMUM (Reserved (no event indicated))# S& y+ ]% f/ `6 x+ D
  19. 0x29, 0x65, //   USAGE_MAXIMUM (Keyboard Application); H# M7 t, j& y- U  |- ]. k
  20. 0x81, 0x00, //     INPUT (Data,Ary,Abs)) a: ]6 [* _: u% e8 X
  21. 0x25, 0x01, //     LOGICAL_MAXIMUM (1)1 `7 x1 _1 J1 I2 o9 }# Q
  22. 0x95, 0x02, //   REPORT_COUNT (2)* j$ H& `$ K0 B" y% q
  23. 0x75, 0x01, //   REPORT_SIZE (1)! A. B- K$ c- \2 s5 V( @
  24. 0x05, 0x08, //   USAGE_PAGE (LEDs). W, i# g! t% Z) g& N. J* [
  25. 0x19, 0x01, //   USAGE_MINIMUM (Num Lock)
    7 t; H! R( v1 F* x7 Z
  26. 0x29, 0x02, //   USAGE_MAXIMUM (Caps Lock)
    4 L2 ?; @% U4 ^  w0 _5 W
  27. 0x91, 0x02, //   OUTPUT (Data,Var,Abs)
    # j( V. J: x! z
  28. 0x95, 0x01, //   REPORT_COUNT (1). T9 ]4 F5 W5 T
  29. 0x75, 0x06, //   REPORT_SIZE (6). D  r- c% H% {4 C
  30. 0x91, 0x03, //   OUTPUT (Cnst,Var,Abs)
复制代码
) U9 x  O9 j5 ^1 _4 @; E+ {
' z4 @6 p9 d& G
直接拷贝到CUSTOM_HID_ReportDesc_FS里面的/* USER CODE BEGIN 0 */ 和 /* USER CODE END 0 */ 之间就可以用了。) c/ t, V$ {) ]; y. A& B
4 }( p4 d2 k4 C* W9 d; W: Q
  j- A1 j3 B6 b$ e- S
搜狗截图20170815192617.png
" u( A9 s5 e5 Y* h* ~' ?- a
  R- k' m+ P. D7 Z2 V) A
赞 收藏 评论1 发布时间:2017-8-15 19:37

举报

1个回答
anny 回答时间:2017-8-16 09:13:03
多谢分享
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版