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

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

[复制链接]
anny 发布时间:2017-4-13 15:03
本帖最后由 anny 于 2017-4-13 15:04 编辑
" O" i9 W3 h; l+ n/ h% K, p
: @6 e7 \+ A+ S' P6 b/ c7 [- D* [一直懒得去看USB的资料,却又对USB相当好奇,今天就拿块板子做一下USB HID的实验。板子的芯片是STM32F103RCT6 ,使用STM32CUbeMX配置相当简单:
2 N, H5 D& m& P$ ?; {: m& Q' ^" X1、配置时钟、USB选项及管脚功能,有二个LED和二个按键% O6 I( {+ G; m6 j/ {( P. S6 f( M2 w
1.png
. S# q; [! p( o: ]
7 r" b0 z% X0 N& f4 j2、选择USB功能为HID! i8 l- X* R+ H' j  }( Q, \
2.png 9 A* B9 I) [1 M9 O: K$ Z

- P" ~+ @) J5 [5 z; d2 h3、配置时钟
: E: B( a: @; X7 I! d 3.png
; U3 r' o. i: P; z# ~
* @4 Q8 b+ o7 _3 d) o4、配置IO口功能/ @3 f5 b$ c* @; q1 h! b. e. O7 X' V0 Q( d
4.png 7 h" {: P$ D$ N( r& X( [& t3 y
, `* A. v1 m! W# V- u* H
这样就完成了配置,再生成工程,整个过程不到1分钟。2 W: ]: t4 [5 s6 b
当然还要在工程里面添加必要的应用程序:
' V! M0 |& |9 Y+ D3 `+ `' l1、在usbd_custom_hid_if.c文件里面的__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS数组里面添加如下内容:5 `  `& W- ~2 s
5.png   H3 o5 D3 L  E" _
2、在usbd_custom_hid_if.c文件里面的int8_t CUSTOM_HID_OutEvent_FS添加如下程序:; n+ s, \- ]) V/ ~; X
6.png 3 s6 C0 H/ j8 {/ C: S* J
/ n! q8 r" V3 [
3、在main函数里面添加如下内容:
+ J/ S1 c" K# }& b' c* v 7.png
4 t* Q# b( H/ @
6 G1 g; Z; x, m3 r这样可能有点不明不白,可以参考附件的PDF教程及工程文件,接下来看看效果:
) `4 N; `3 W+ M' f5 w% l上位机软件:
1 C! E- o* v6 f) T# t) R QQ截图20170413141519.png ' G  t" u3 X8 c# P* f# K4 k
1、连接图:3 j+ W% `4 n/ _! D
P70413-141700.jpg 1 _, t$ P! L) I( p/ z# `
  k0 Q2 P  K' Q# x  ^
2、上位机控制板子上的LED:
8 T" Q' X, j- }. c" L$ r P70413-141923.gif + E' w& M; P$ M
& R4 x6 u7 i6 E- N$ O; M/ ?7 }
3、按键信号反馈给上位机:& A' V5 G* `8 G' }8 u2 a
P70413-141954.gif
3 p8 J) c$ u9 X+ r  e+ Z4 g9 |& j0 `: G  B
附件:
: Q. V0 s9 Y- L2 A- P, J 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:591 e- M$ f, j9 Z5 W+ S: v
不错,感谢,# ^! n) F# `+ V* Y% Q. c
对于报告描述符还是有不明白,
5 q' {+ O% U0 f% V
你可以看看这个 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) */  ) A  a$ F! q3 V
3 G! u( b. a3 m$ Z7 h# N- w' 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 编辑 ( H# K* m9 I; s
9 A- }0 S' W$ I, t- c9 Z" X
请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设备管理器中提示“unknown device”。% a5 J; O$ u9 j2 T1 I
能指点下不?
- H# s* D  c& [; t9 C( R2 Z
111.png
anny 回答时间:2017-7-19 08:22:16
hereandy 发表于 2017-7-18 15:41
3 g" }" _) L6 P8 i. p请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设 ...

: L9 N- F' a1 a( H( G3 S查一下是不是分频不对
hereandy 回答时间:2017-7-19 10:55:29
谢谢 ANNY的回复,我的时钟是这样的:
) B3 A% I1 f7 E0 q7 T. Y/ {
3 o' Z' x" v$ I

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

里面好像没有USB时钟的配置
anny 回答时间:2017-7-20 09:13:49
hereandy 发表于 2017-7-19 10:550 L8 Q0 X9 U1 z( O: u
谢谢 ANNY的回复,我的时钟是这样的:
5 D1 }& _2 N3 _- l# s5 W
用函数显示出来看看,类似标准库的RCC_GetClocksFreq(&RCC_Clocks);//用于查看单片机运行频率
emc_ytm 回答时间:2017-7-20 20:59:37
& d+ A  z, [* ]0 P! E5 z5 j1 M
不错,感谢,
, f4 {9 n6 i/ O. a) t$ M. x 对于报告描述符还是有不明白,- p0 Z9 P6 l: A# H

9 ?9 s  T: V0 U2 C  \; `- Z
emc_ytm 回答时间:2017-7-21 17:42:03

& q9 E8 g# u/ x7 Y' }2 V7 o3 n: R) Q2 o0 n# W9 S
好的,谢谢!!!
4 b1 g  T8 }# {! V4 d) X  
emc_ytm 回答时间:2017-7-21 19:34:43
请问一下,你的硬件是如何接线的,' q2 O+ {7 p' ~& e6 F5 |
我的现在连上去都是发现为低速设备6 [# `: \- m; X! G, p9 h6 q6 L
40h Should be 8 bytes for low-speed devices     --提示这一个,所以不正常
+ v2 t( y1 T0 v" [+ B我现在仅是使用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 的线太长了,   : c0 w3 h) K' W6 t. x

# Y) }. J6 }3 d. e8 a 缩短一些接到电脑上就可以了。3 S! `' ]2 ]2 D

6 Q+ z6 k1 b% d/ r0 Z. S9 I, q) R2 Q
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版