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

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

[复制链接]
anny 发布时间:2017-4-13 15:03
本帖最后由 anny 于 2017-4-13 15:04 编辑 ! k- t) i  t1 z: P
( G$ v0 f) k( v4 ^9 k' q
一直懒得去看USB的资料,却又对USB相当好奇,今天就拿块板子做一下USB HID的实验。板子的芯片是STM32F103RCT6 ,使用STM32CUbeMX配置相当简单:
+ e( F0 R$ k, v3 g! A1、配置时钟、USB选项及管脚功能,有二个LED和二个按键# p/ n# Q; X5 `; U  L/ V8 p
1.png
6 {  {# k; u1 Q/ }+ [# B2 R, C. q, Z0 l) k% _* d1 L
2、选择USB功能为HID
! j- [5 k5 y* h$ e; Y, ] 2.png
5 _: T- P" f' D% a7 \
8 w1 Q# ^; K) D6 V* A3、配置时钟6 `& L  m7 f$ A, u
3.png , D5 M, K+ f* p/ d; O

2 k, C$ O) }. m4、配置IO口功能
* Z. g3 P! T9 G: v9 y# ^4 x* u 4.png 0 t. E$ k9 C! P6 A# v1 [' E

6 N; Y, _( [. u/ m; m* O" k这样就完成了配置,再生成工程,整个过程不到1分钟。  m4 B7 ], R% r- C
当然还要在工程里面添加必要的应用程序:
3 ^1 a$ ^# E) B1、在usbd_custom_hid_if.c文件里面的__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS数组里面添加如下内容:
1 n; l1 |3 V, ?  w$ e: b 5.png 1 H0 c/ l) E% u4 @  M1 T) Q
2、在usbd_custom_hid_if.c文件里面的int8_t CUSTOM_HID_OutEvent_FS添加如下程序:
' x  r- J# J. S7 B0 E 6.png 1 Y+ Y& _4 }* K" n  d
. `( n2 |2 Q  u
3、在main函数里面添加如下内容:
# u' ], u. e' q, h/ L5 P0 \ 7.png
5 N; I; x8 z2 x
4 c5 i) V' h' n1 A. H5 l: h这样可能有点不明不白,可以参考附件的PDF教程及工程文件,接下来看看效果:$ s+ e2 T3 t) W! H6 Z0 c
上位机软件:
' g5 p0 R* u) A$ b QQ截图20170413141519.png
1 F* u! f% U% Z% ~1、连接图:) J  h( c3 w. ^/ G( \2 d
P70413-141700.jpg
: Q' ]5 G# G0 Z. U0 ~. d# o% v4 a  h5 J1 D$ i2 p
2、上位机控制板子上的LED:
) ]7 i3 k- R; J P70413-141923.gif
" E$ Y1 C, b8 ~9 m! E' d( F- E5 R1 ~3 x* M6 `1 d
3、按键信号反馈给上位机:
+ A# t' c2 b$ f8 b P70413-141954.gif
( y# z* n& m7 e- D  X! u) }: U! `! b4 }
附件:8 n" z6 O4 |1 o1 m
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
/ C# v5 W4 [; T  r, t( a. a不错,感谢,* }8 y& b0 a' h
对于报告描述符还是有不明白,
$ a& k# ]# l4 r3 |; Y! Z6 w
你可以看看这个 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) */  % f, T9 @( C; u7 U, v- s( X# ^2 A

! V* k# V' W$ B../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 编辑 : G) ~% h( \* X

! \- i/ g3 t5 O7 M4 m1 P请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设备管理器中提示“unknown device”。- K2 Q1 _* z1 S: u3 z
能指点下不?
) U5 O: \, E4 w
111.png
anny 回答时间:2017-7-19 08:22:16
hereandy 发表于 2017-7-18 15:410 a/ s  m1 ]/ e+ j% L
请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设 ...
. x4 B# [& R# C+ }: p0 L: T- v
查一下是不是分频不对
hereandy 回答时间:2017-7-19 10:55:29
谢谢 ANNY的回复,我的时钟是这样的:
: i' C$ ~( o4 ~& V* {! K' S6 E2 W7 Z- r! s# u

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

里面好像没有USB时钟的配置
anny 回答时间:2017-7-20 09:13:49
hereandy 发表于 2017-7-19 10:55
* u0 W/ @5 `8 z1 K! m谢谢 ANNY的回复,我的时钟是这样的:
% i/ ?+ k& P- X5 V4 v$ q" t
用函数显示出来看看,类似标准库的RCC_GetClocksFreq(&RCC_Clocks);//用于查看单片机运行频率
emc_ytm 回答时间:2017-7-20 20:59:37
3 x. D: E$ R# [8 m) D
不错,感谢,' P  L* c% p; m
对于报告描述符还是有不明白," T( [- {+ n: c+ h  O9 p  u

9 a$ O& V1 o5 |
emc_ytm 回答时间:2017-7-21 17:42:03

, [- H! h7 l  V' A) p* ~
" K4 y/ _5 l9 S" P: F7 l5 v$ @" H5 f, k好的,谢谢!!!0 w$ K& A# S* _2 h* a
  
emc_ytm 回答时间:2017-7-21 19:34:43
请问一下,你的硬件是如何接线的,' |$ N3 ?- }* B6 U- R( B% m
我的现在连上去都是发现为低速设备( M1 t0 Y, W# d1 f' u' n
40h Should be 8 bytes for low-speed devices     --提示这一个,所以不正常
8 j4 ^7 P% ~4 q1 }" i) Z我现在仅是使用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 的线太长了,   
, Y; n1 I/ X6 u: q& K3 q
7 [& x4 ~1 f3 a( t& T7 N 缩短一些接到电脑上就可以了。  @9 I& }  c1 I$ O5 J  i

0 X8 S/ J/ h+ X  E2 N0 S
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版