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

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

[复制链接]
anny 发布时间:2017-4-13 15:03
本帖最后由 anny 于 2017-4-13 15:04 编辑
8 Q" c( e8 g) J; P
0 K$ K7 D0 q% y3 R一直懒得去看USB的资料,却又对USB相当好奇,今天就拿块板子做一下USB HID的实验。板子的芯片是STM32F103RCT6 ,使用STM32CUbeMX配置相当简单:; U( q; g# F2 s& p
1、配置时钟、USB选项及管脚功能,有二个LED和二个按键
) o0 |: @8 F. _! Z: |6 _ 1.png 7 V' F0 C, Y) ~1 q0 s8 M

2 }: h, i% k# c) |% q- b2、选择USB功能为HID6 }7 N' w. Q  v& g+ W  n  b7 C6 j
2.png 4 o" I2 r4 f2 B' Y% m# A
* `, b7 X6 S: u7 T5 f4 [" s
3、配置时钟
, _! j: x7 }: K( A/ ?# Z 3.png : Q* ?: {9 P; F& `

/ u9 Z6 j  H7 p4 y9 b4、配置IO口功能
4 `, ~5 @; H5 b 4.png
1 ~( o# Y4 `# m" U' i/ C1 e8 _! ?8 _2 x9 V( E' v/ c
这样就完成了配置,再生成工程,整个过程不到1分钟。
( E, ~  D. t" _7 g# W% u当然还要在工程里面添加必要的应用程序:; U" I2 z  k  i5 U
1、在usbd_custom_hid_if.c文件里面的__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS数组里面添加如下内容:
% R" b* K) h4 Q/ |. v6 q 5.png , F/ h8 Z' x9 _* c
2、在usbd_custom_hid_if.c文件里面的int8_t CUSTOM_HID_OutEvent_FS添加如下程序:1 L5 j' I2 n' y1 f6 I$ N
6.png
* _8 [7 L- W1 ?  K  z* n3 R" @" `. w
5 q( U0 `' S- J' H& g- ^3、在main函数里面添加如下内容:- G* m  V6 W0 h+ U# z6 d
7.png 5 p/ A: E6 l7 n6 L: M7 h! Q6 h

. x3 W7 B' G, Q7 H' T这样可能有点不明不白,可以参考附件的PDF教程及工程文件,接下来看看效果:* f6 Q4 R! {, C' H4 }0 I
上位机软件:4 Z& d0 T! [. u, }
QQ截图20170413141519.png 8 h/ q2 w0 @8 a" C( _5 J% t
1、连接图:
. @+ w0 @  c& y7 D/ r P70413-141700.jpg / J8 i7 R9 l5 l, i' W# u) X

, B0 `( u6 n) E" z/ Y6 m7 Y/ ~2、上位机控制板子上的LED:8 G/ N9 i& w/ N& r4 G
P70413-141923.gif : X; c3 _; u* q8 S6 `
; t% S/ T7 {0 a6 p& N  ]+ B9 k4 `
3、按键信号反馈给上位机:
: p0 H; I0 P' o1 g! F; f P70413-141954.gif 4 t6 h: ]5 }1 G$ t4 [- n

! \' @/ I2 a4 U) L附件:2 s, E( P0 u6 d) \6 v: N; D* e
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, o  d, z$ I. S6 n
不错,感谢,
' ^" z" d6 D& o. m: Q 对于报告描述符还是有不明白,

4 X" j; \. ]7 K) E. z  a: D你可以看看这个 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) */  
6 v/ F4 {$ F# F/ O: y8 r
- A% Y' K# I1 ]../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 编辑
( d& A# S; @+ |6 e+ N, F7 L; O
% F+ B) W4 ?1 f9 X2 h0 R请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设备管理器中提示“unknown device”。( L7 @8 M# k# U1 s
能指点下不?2 d6 ]9 t4 E. ]: e
111.png
anny 回答时间:2017-7-19 08:22:16
hereandy 发表于 2017-7-18 15:41
% u, ]( P. _( s( P7 m- M请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设 ...

3 K) r3 H4 d% k查一下是不是分频不对
hereandy 回答时间:2017-7-19 10:55:29
谢谢 ANNY的回复,我的时钟是这样的:
/ e2 [, D: ^# v' h
+ F& h  d3 D7 a) O7 W1 c6 M" M

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

里面好像没有USB时钟的配置
anny 回答时间:2017-7-20 09:13:49
hereandy 发表于 2017-7-19 10:55
( e( P% D' b2 S$ V9 p谢谢 ANNY的回复,我的时钟是这样的:

& l# G0 ]8 w9 G" |/ I用函数显示出来看看,类似标准库的RCC_GetClocksFreq(&RCC_Clocks);//用于查看单片机运行频率
emc_ytm 回答时间:2017-7-20 20:59:37

$ _8 ?, v9 H3 H* C1 ]不错,感谢,: o# G5 r# `& h
对于报告描述符还是有不明白,  a$ e6 q9 p3 w1 q" O5 L

. F! ~9 e" I, Z. g0 n+ L" L: J
emc_ytm 回答时间:2017-7-21 17:42:03

9 r; r& L0 G7 m! q  X. ^" @- y- r1 l9 j& o
好的,谢谢!!!
7 v% v! U/ h& b3 j2 G9 G9 |8 k. w  
emc_ytm 回答时间:2017-7-21 19:34:43
请问一下,你的硬件是如何接线的,. [+ h  P  l# e3 g) l3 v- a& P5 z
我的现在连上去都是发现为低速设备
9 m; \: n. O( M$ f# d40h Should be 8 bytes for low-speed devices     --提示这一个,所以不正常
2 }9 u# M8 F- U我现在仅是使用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 的线太长了,   6 u3 k( Y" l8 b6 X  Y; q( R! F

! E. a, X( H  U* a5 e1 K: [5 K0 V  F 缩短一些接到电脑上就可以了。
* w  s( y4 A, k' Z  \; x
$ R8 H, e, E2 a; r: ~  ]0 @0 [
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版