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

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

[复制链接]
anny 发布时间:2017-4-13 15:03
本帖最后由 anny 于 2017-4-13 15:04 编辑 & }, i; R8 n! Y  B' F

* l+ \, G' w5 i6 U7 K- \一直懒得去看USB的资料,却又对USB相当好奇,今天就拿块板子做一下USB HID的实验。板子的芯片是STM32F103RCT6 ,使用STM32CUbeMX配置相当简单:
7 U4 F+ r8 `0 Q9 o2 f1、配置时钟、USB选项及管脚功能,有二个LED和二个按键/ g9 I. p) x, F
1.png 3 _: I3 u' x2 ^7 Y: v0 ]( `
. g5 @8 H: w2 _8 w( g. y0 Q+ n% u3 S6 h4 n
2、选择USB功能为HID
, Y  L: u1 Q" @9 w( u5 q 2.png
, C: p$ N* m$ m
8 ^/ _3 c' [8 y" J3、配置时钟9 W6 ?$ u$ d3 l  H; F% ^, G
3.png . D7 j& z- b& C

' b, B% M/ j& a) w5 z4、配置IO口功能" V1 [- D1 E' g& _- J9 D
4.png ' K0 ?( D5 k9 D! Z
+ ]: y/ E8 y, Y1 Y
这样就完成了配置,再生成工程,整个过程不到1分钟。" }5 Z: f: |9 P: b1 H
当然还要在工程里面添加必要的应用程序:; Q9 p) Q0 C4 G% q1 d
1、在usbd_custom_hid_if.c文件里面的__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS数组里面添加如下内容:( |4 x, q' I! E+ x
5.png * S! ]- R/ `8 B& U& Z' A: A: z7 ^  b! n
2、在usbd_custom_hid_if.c文件里面的int8_t CUSTOM_HID_OutEvent_FS添加如下程序:
& ^6 V6 j9 u% W% u% v; h  k  ?- f' @ 6.png
5 o$ l& [* g! O, _" k- y( o
. S! a& @) Y! `, [# P" E3、在main函数里面添加如下内容:) o# X5 T) o& d8 L5 a+ a
7.png
- G8 G; G, b, h0 M" ?1 _
4 B% [$ H2 O6 q5 R) p4 Z0 ?. q这样可能有点不明不白,可以参考附件的PDF教程及工程文件,接下来看看效果:
# ]6 |8 }2 ^+ |) Q" ?上位机软件:4 E. M& E5 K+ I: q
QQ截图20170413141519.png 6 L4 c- D4 Z' q  {7 p7 s) y
1、连接图:
6 n( B- k" n) i( S. T0 _' _% G) O& G P70413-141700.jpg 1 @2 a* D9 w  [- i8 X% T
  V& m9 [2 X( [+ M
2、上位机控制板子上的LED:
9 k' b. k; Z$ d P70413-141923.gif : ^3 K0 {5 P) _" y- |8 T# G: K9 N
9 Z3 m/ @3 f( n$ K
3、按键信号反馈给上位机:
; g( A0 i8 q! T% q P70413-141954.gif 0 E7 L' X3 W. @% R

" x* t5 n( e2 |0 C附件:6 `. `+ ~4 g; z8 X% p1 h  x/ f4 n
MiniSTM32_HID.zip (12.15 MB, 下载次数: 6447)

评分

参与人数 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
  X+ {* _7 @! ^9 K8 H不错,感谢,
2 e5 x, Q  ~  d% Z- i% ] 对于报告描述符还是有不明白,
7 i6 }, x$ d6 d! L3 ?6 m- ?
你可以看看这个 STM32的CustomHID的各描述符介绍.zip (2.94 KB, 下载次数: 688)
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) */  ! x7 f1 k3 B3 Y) D) N
% A/ R, n  W6 z$ p+ C
../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 编辑 . W/ G3 y2 f+ Q5 _# Q, e, }: I( _4 e
: Y9 V4 Y! |8 @# H  Y- T5 `
请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设备管理器中提示“unknown device”。0 N8 V% _- V( b4 ]5 |0 R# N
能指点下不?9 c; x; n7 ^' t3 c3 p
111.png
anny 回答时间:2017-7-19 08:22:16
hereandy 发表于 2017-7-18 15:412 f( }& c0 |( S& t3 b% z
请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设 ...
' R8 c. g" N: v* m: N4 W7 G0 A
查一下是不是分频不对
hereandy 回答时间:2017-7-19 10:55:29
谢谢 ANNY的回复,我的时钟是这样的:  A6 c% B+ ^1 f
8 Y* A5 s# p: W4 R$ F

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

里面好像没有USB时钟的配置
anny 回答时间:2017-7-20 09:13:49
hereandy 发表于 2017-7-19 10:55# z% O6 ~, l0 e& m
谢谢 ANNY的回复,我的时钟是这样的:
2 m' R" q" Z" I
用函数显示出来看看,类似标准库的RCC_GetClocksFreq(&RCC_Clocks);//用于查看单片机运行频率
emc_ytm 回答时间:2017-7-20 20:59:37

1 |" a; M  j1 T8 h& G# g不错,感谢,& V2 \4 M. C9 n: v
对于报告描述符还是有不明白,
$ U4 \/ M8 X. F  ~% v0 \6 I
# v4 o- k8 d: l! M* U# L
emc_ytm 回答时间:2017-7-21 17:42:03
6 Z& z8 p' s# Y& k

- h* X( I2 ?( [: p) t* C好的,谢谢!!!$ V  F+ |! S; G. i( S
  
emc_ytm 回答时间:2017-7-21 19:34:43
请问一下,你的硬件是如何接线的,5 ^( z- t& j& r! k; [7 O
我的现在连上去都是发现为低速设备5 X4 f1 ~% s! ~8 ^& U
40h Should be 8 bytes for low-speed devices     --提示这一个,所以不正常
: o. I/ ~4 z/ b: T我现在仅是使用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 的线太长了,   9 l0 u2 M5 @  V2 j

2 c. F' b. I) v8 @ 缩短一些接到电脑上就可以了。
5 I2 o0 a- N( u( V' V( a: o8 g
( _. I! K& \. O

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版