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

通过STM32CUbeMX建立USB HID的双向通讯实验成功  

[复制链接]
anny 发布时间:2017-4-13 15:03
本帖最后由 anny 于 2017-4-13 15:04 编辑 % {8 C. c) J( M8 C- Z- `7 ~
! P6 x! E# S* z! ~
一直懒得去看USB的资料,却又对USB相当好奇,今天就拿块板子做一下USB HID的实验。板子的芯片是STM32F103RCT6 ,使用STM32CUbeMX配置相当简单:% [- S" M4 w. R! {
1、配置时钟、USB选项及管脚功能,有二个LED和二个按键  a; B  b# p0 E! F; g
1.png " v( k' O0 a2 Z2 ]
8 O/ X! C% U6 ~" g+ N% e7 C' T1 _
2、选择USB功能为HID: f9 k. E$ X  b9 o2 l
2.png ' w2 E  X5 }/ B0 l
- l( w! |" z+ I5 _" X
3、配置时钟' z, j0 R' |8 j% b
3.png
- @# G6 j) W9 M9 R. c& W, O
+ I5 ^. `, r) |* @4、配置IO口功能  r, s; Y8 J9 }  I) v
4.png
+ H& c( P5 @9 t/ C( L- y+ C) V- q
这样就完成了配置,再生成工程,整个过程不到1分钟。0 Q0 Q0 x- L7 d! b+ x7 N) T. _& e
当然还要在工程里面添加必要的应用程序:# L, N$ e/ R$ ?7 u
1、在usbd_custom_hid_if.c文件里面的__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS数组里面添加如下内容:
' i+ r* B9 C( P* b* W) _7 n/ G5 Z( A 5.png " @  _: y. R4 O: I9 X) A0 C
2、在usbd_custom_hid_if.c文件里面的int8_t CUSTOM_HID_OutEvent_FS添加如下程序:
  h6 f! }% j% @ 6.png
( \4 \+ Q  Q4 d% `* W
7 }0 S6 f, b6 n$ \5 _' }' x3、在main函数里面添加如下内容:
3 L7 F$ G  c+ H) l% V9 f 7.png
" ]% A: e% ~1 g) n8 G. I
1 x7 B5 }. ]* H1 E- {6 R这样可能有点不明不白,可以参考附件的PDF教程及工程文件,接下来看看效果:  \" T2 @4 y2 k$ f* A$ Z8 J4 x
上位机软件:! _. {! V; P& E  \3 W6 J
QQ截图20170413141519.png ! }. S: v; F( D' [. B3 p
1、连接图:5 `/ {$ {4 i9 Q; b' O
P70413-141700.jpg
4 ^3 S, ]4 o  K8 Q0 f0 L
4 m$ G0 R6 [8 p: `  ]2、上位机控制板子上的LED:
5 T( M% s7 ]4 f" k) X3 t$ K P70413-141923.gif
5 Q9 V/ c! D( l& ], Q( v3 W" P5 c5 M
3、按键信号反馈给上位机:
- J  [( S! W7 V  @- T3 b' { P70413-141954.gif 1 b3 W$ W: t; j. I

4 o3 h5 ]" @5 @0 \! d附件:8 c  K% E3 s1 M/ L, _
MiniSTM32_HID.zip (12.15 MB, 下载次数: 6393)

评分

参与人数 6 ST金币 +8 收起 理由
ddyyzz123 -1 很给力!
stefy -1 感谢分享
a15815760472 -1 很给力!
gla19930103 -1
子曰好人 + 10 很给力!
努力的人 + 2

查看全部评分

9 收藏 31 评论154 发布时间:2017-4-13 15:03

举报

154个回答
anny 回答时间:2017-7-21 08:26:14
emc_ytm 发表于 2017-7-20 20:59
. A' l% g0 }+ m4 u" X& j8 l不错,感谢,5 I) H1 Z% |. `& y+ `0 e, a' L* H
对于报告描述符还是有不明白,
2 U- \! B& `1 h# z4 Z3 O
你可以看看这个 STM32的CustomHID的各描述符介绍.zip (2.94 KB, 下载次数: 682)
stmuser 回答时间:2019-2-19 16:38:42
目前正在用STM32F103的USB,准备做个HID设备,用cubeMx生成了一个工程,代码完全不动,可以枚举,但是想修改描述符,找半天没找到怎么修改,除了设备描述符可以简单的修改,其他的都没有找到地方。楼主有什么关于USB库的使用文档没。
zengxuzhong 回答时间:2020-7-24 12:39:58
0x06, 0xFF, 0x00,      /* USAGE_PAGE (Vendor Page: 0xFF00) */  
- K3 @( x2 i5 A6 U; ^- w% O5 k) ]5 u+ S7 R" {
../Src/usbd_custom_hid_if.c(48): error:  #146: too many initializer values  直接复制过来的不知道错在哪?
jackten 回答时间:2017-4-13 16:05:09
楼主   厉害                          
fengjing500 回答时间:2017-4-14 16:25:09
牛逼了啊
董辰辉 回答时间:2017-6-13 14:19:43
学习下
zhao.zhao 回答时间:2017-6-13 19:27:05
学习了,明天跟楼主做以下看看
hereandy 回答时间:2017-7-18 15:41:44
本帖最后由 hereandy 于 2017-7-18 15:47 编辑 2 L+ b3 m; R0 W  t
$ M1 C+ O& j2 i- y
请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设备管理器中提示“unknown device”。" ?0 i  H! P+ j
能指点下不?
; d% A& d5 t1 T$ A4 a
111.png
anny 回答时间:2017-7-19 08:22:16
hereandy 发表于 2017-7-18 15:41
2 I, [. k& ^; B" b请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设 ...
( s4 U* ^: G; c; Z9 K( S- `* k7 M
查一下是不是分频不对
hereandy 回答时间:2017-7-19 10:55:29
谢谢 ANNY的回复,我的时钟是这样的:
8 ~( }. k6 m3 E
' l9 y! s( ]$ e7 P" u. e; x4 r

里面好像没有USB时钟的配置

里面好像没有USB时钟的配置
anny 回答时间:2017-7-20 09:13:49
hereandy 发表于 2017-7-19 10:55; B# `; O; c% G7 [' M' p& U1 m
谢谢 ANNY的回复,我的时钟是这样的:

4 G' o# ]+ f7 G; N. _# x用函数显示出来看看,类似标准库的RCC_GetClocksFreq(&RCC_Clocks);//用于查看单片机运行频率
emc_ytm 回答时间:2017-7-20 20:59:37

# x; G2 }' |4 F# ?; x9 D% a! G不错,感谢,. `  V+ F6 U& z7 [3 [$ ^
对于报告描述符还是有不明白,
" e( |8 g4 D( y! y# B' z* {
) R8 t- _, A$ [7 I2 `; I
emc_ytm 回答时间:2017-7-21 17:42:03
( o5 }' k0 e' \6 j

( s6 u) M6 V0 K2 M# g0 p( B6 g0 K好的,谢谢!!!$ \4 l% i2 r6 ]' l" ?8 K& r
  
emc_ytm 回答时间:2017-7-21 19:34:43
请问一下,你的硬件是如何接线的,/ t" Y* l9 h/ h( z2 W# c. R  w9 n
我的现在连上去都是发现为低速设备2 [% H( _% f/ `1 p) Q
40h Should be 8 bytes for low-speed devices     --提示这一个,所以不正常
0 S# ~; D4 m+ W我现在仅是使用DP 也就是D+ 上拉1.5K 到3.3V。
QQ截图20170721193350.png
epochal 回答时间:2017-7-21 20:48:32
多谢分享!
emc_ytm 回答时间:2017-7-22 15:54:55
问题初步确认是USB 的线太长了,   
. Q$ J3 @& A9 N0 t
# A4 i" B; _2 X! c! m 缩短一些接到电脑上就可以了。
& a( C/ [1 E, b5 g) o3 C7 f" V3 Y9 ?9 h2 c
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版