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

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

[复制链接]
anny 发布时间:2017-4-13 15:03
本帖最后由 anny 于 2017-4-13 15:04 编辑 5 ^1 H: s& [( D6 S

0 m- b$ I  G) w" Y3 j; [一直懒得去看USB的资料,却又对USB相当好奇,今天就拿块板子做一下USB HID的实验。板子的芯片是STM32F103RCT6 ,使用STM32CUbeMX配置相当简单:; [! S$ i0 x6 P& N+ y2 G
1、配置时钟、USB选项及管脚功能,有二个LED和二个按键
  u$ ~/ `; |" h( S; Z 1.png
) A* f6 B. b' \, M3 M0 D+ k) m: T2 @. Q
2、选择USB功能为HID. K$ H7 a3 R/ ~; b6 M0 E
2.png
, y! P% |9 L- x# k: q, X1 F* S3 g5 ~/ b, f& s
3、配置时钟
8 w: s# H* o8 W$ w" k 3.png ; a0 M' ~, v+ C+ i( X! H, K8 k0 V# A

, ]  ?+ |4 H9 j$ _& N/ x2 h5 Q4、配置IO口功能; L& m$ H8 ~: h8 ^; Z% M% ?
4.png
% N7 ?/ r  r0 O3 h) }3 S
! I8 d8 Z) {/ |# G0 w: i" O这样就完成了配置,再生成工程,整个过程不到1分钟。
& `: I" O& h$ O3 ~1 I0 p/ ?, L当然还要在工程里面添加必要的应用程序:9 F. r1 Z+ X5 b3 `
1、在usbd_custom_hid_if.c文件里面的__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS数组里面添加如下内容:9 j! G5 W$ N+ l
5.png $ |+ R5 g8 A& E5 \
2、在usbd_custom_hid_if.c文件里面的int8_t CUSTOM_HID_OutEvent_FS添加如下程序:9 `( M0 p. h4 U* b
6.png
- s; p1 h- e' I4 s& |
; A& o% B/ N1 [$ K9 Z4 n; }3、在main函数里面添加如下内容:# A7 y, i5 H" Z5 @" U0 I$ M6 Z& R
7.png
  u8 m1 C9 Z+ F1 [5 L/ P& K3 T; t( |
这样可能有点不明不白,可以参考附件的PDF教程及工程文件,接下来看看效果:
4 X8 ?8 e; R/ L" \  L上位机软件:! i, `- s9 g/ n  ^+ P6 |3 }0 @1 q
QQ截图20170413141519.png ; Y( L4 L3 j% B; Z. V
1、连接图:9 @- q6 k6 L: g3 _' y) w
P70413-141700.jpg
7 ~8 P" H! t% x  `  V. i  Q2 j
, }$ d) |' y: c# {2、上位机控制板子上的LED:
% A6 t: t. N- W5 T0 ^& R$ b P70413-141923.gif
! F, V& S( e' v2 @8 ]; k$ i4 N! g. V3 X3 G8 B* f& f  U
3、按键信号反馈给上位机:  M2 Z7 A% a+ e6 t- C
P70413-141954.gif + T5 Y6 a/ }- ~
/ X& Q( B/ n4 z) I4 N* e+ e
附件:& x* y2 j0 w9 E" G7 V1 E; w
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
. ]4 t; s! f/ c不错,感谢,
' k" I& G$ [5 A8 W% c 对于报告描述符还是有不明白,

) @  p$ U  |4 k4 x5 ]你可以看看这个 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) */  
9 e+ p, @/ K2 Y3 i# o% W& j, c' \7 h6 `% i; `
../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 编辑 7 u& \  u, `0 _, E

: ^  k, N) D6 C+ T: t请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设备管理器中提示“unknown device”。
% j  L; A- g8 ^3 Z0 m* f! ] 能指点下不?+ Q% u% l# m, a. c' a: J
111.png
anny 回答时间:2017-7-19 08:22:16
hereandy 发表于 2017-7-18 15:41
8 N9 C, W- G* ]8 w/ r( j0 ?请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设 ...

% T* z8 \3 t' Z查一下是不是分频不对
hereandy 回答时间:2017-7-19 10:55:29
谢谢 ANNY的回复,我的时钟是这样的:
8 [. u  c: C  z7 b3 l+ j
3 Q1 [1 A- \; R" ]

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

里面好像没有USB时钟的配置
anny 回答时间:2017-7-20 09:13:49
hereandy 发表于 2017-7-19 10:55
: e2 L; Q1 j8 S" ?# |谢谢 ANNY的回复,我的时钟是这样的:

. N5 Z& M1 {5 k0 v: G用函数显示出来看看,类似标准库的RCC_GetClocksFreq(&RCC_Clocks);//用于查看单片机运行频率
emc_ytm 回答时间:2017-7-20 20:59:37

( \0 a9 p( M/ I+ N* |& H* S不错,感谢,
2 c' V% Z9 B5 l( G. k: F 对于报告描述符还是有不明白,% ~7 P! y/ ?# k% _9 K' n3 ?
5 [& E# M5 w4 P; Q$ h0 d5 v
emc_ytm 回答时间:2017-7-21 17:42:03

6 k) I3 `* ~+ w" m2 T* x
) R- X( Z' Z& s& Z好的,谢谢!!!( s4 E$ x* e; A% S; s
  
emc_ytm 回答时间:2017-7-21 19:34:43
请问一下,你的硬件是如何接线的,, E: l! ^+ R9 P4 M
我的现在连上去都是发现为低速设备) c. |" f: g) U) D) B
40h Should be 8 bytes for low-speed devices     --提示这一个,所以不正常
* s3 A5 Z4 ?- K' |0 V0 s9 s0 n% S我现在仅是使用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 的线太长了,     F) R/ v* \0 T8 w" m: |4 w( E

% _& a0 U0 r6 r" Z4 ] 缩短一些接到电脑上就可以了。
6 t; t1 h6 Y) Z/ @
2 j+ J. y) U1 a$ L- P" b0 O
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版