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

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

[复制链接]
anny 发布时间:2017-4-13 15:03
本帖最后由 anny 于 2017-4-13 15:04 编辑 ) z* h6 R, c4 b* `
, Y0 @8 M2 k; I
一直懒得去看USB的资料,却又对USB相当好奇,今天就拿块板子做一下USB HID的实验。板子的芯片是STM32F103RCT6 ,使用STM32CUbeMX配置相当简单:5 r) d% c$ y, F' b' r8 m$ N
1、配置时钟、USB选项及管脚功能,有二个LED和二个按键' w) S& X6 U, E, k
1.png 1 k. T4 c! s( o7 _! c

# N/ k; X* i5 x8 Y2 t2、选择USB功能为HID
9 z% L: |$ R6 [) w* u' B& {: \ 2.png 4 X2 s. B1 K' r1 c7 Z6 b, p- k

4 G2 o! {5 U' ~4 D3、配置时钟+ F: @$ i: G; w0 V& t) G3 K, i
3.png
1 P; S1 ]$ ?5 _/ m  M+ {9 e4 p) g9 B5 g0 Y7 x! s
4、配置IO口功能% D3 K" X; Y, X# U6 }4 E+ ~  h" N
4.png - D; ]. w6 L( d2 K- e1 e

& u8 t4 m- v) z# k4 w) Q这样就完成了配置,再生成工程,整个过程不到1分钟。+ B8 Q) {. S" n1 ]! P$ y% H
当然还要在工程里面添加必要的应用程序:
  ^, x6 b+ |( u( ^' T1、在usbd_custom_hid_if.c文件里面的__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS数组里面添加如下内容:! W3 R- z: B. ?4 `  B
5.png
$ H. p2 {6 M; j: g- Y. u* t2、在usbd_custom_hid_if.c文件里面的int8_t CUSTOM_HID_OutEvent_FS添加如下程序:6 X1 u+ O  ~: b4 X
6.png
3 L5 d; S3 q3 d& k
: T" Y& L4 q0 _+ i3、在main函数里面添加如下内容:
% z# V6 j5 N* q8 m* w0 k 7.png 7 n) z: P1 k: M

! B; V' e0 g; r5 @7 v; }! ^! H8 N这样可能有点不明不白,可以参考附件的PDF教程及工程文件,接下来看看效果:
! i0 P8 q8 P/ W6 m$ A; D上位机软件:
$ o) c2 p& Z9 Q8 A9 t! e QQ截图20170413141519.png 2 e9 F6 q4 u# p& c- G8 P8 b
1、连接图:
9 |6 O& v3 L5 m# S+ {( C P70413-141700.jpg 5 y2 K5 A" q4 z; N7 g" F8 i
+ u5 j7 _+ c& Z, {: P" _
2、上位机控制板子上的LED:( y( W2 v+ O3 }4 \7 x( b5 R
P70413-141923.gif   R0 W: Q& l" e
. }8 m$ c+ r! Y' J5 o* B& J9 c
3、按键信号反馈给上位机:
# H% D) t3 D& R3 {& O  U- C P70413-141954.gif ) \, i" k6 ]6 @) `

6 y6 b* h! F/ f& X7 N附件:
( E; o7 E" e2 r. N 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' A( ~1 z1 K+ ^2 o
不错,感谢,
: K  `" ^0 ?+ C) y 对于报告描述符还是有不明白,

; z/ K7 q' n+ K5 V5 M2 I* n; t你可以看看这个 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) */  / b6 k8 T' T! v2 x0 T% g) J

7 {; a: z8 L2 D% j8 O1 s../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 编辑
" n' Y) O) g9 a  n. [3 W& _" Q9 k  m- {& U7 Z
请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设备管理器中提示“unknown device”。
5 x5 ]# o7 O8 Z4 n! f  j! m 能指点下不?  x, D% I4 a6 P! }" q
111.png
anny 回答时间:2017-7-19 08:22:16
hereandy 发表于 2017-7-18 15:41( S, m, k6 _, M$ u( ^
请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设 ...
  G/ H. u! ]! I" |9 E5 V
查一下是不是分频不对
hereandy 回答时间:2017-7-19 10:55:29
谢谢 ANNY的回复,我的时钟是这样的:* J- Y9 b5 d% Y; J0 v
5 c1 b* Q( d9 D6 G

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

里面好像没有USB时钟的配置
anny 回答时间:2017-7-20 09:13:49
hereandy 发表于 2017-7-19 10:558 t6 }* ?. q  a$ R' f8 X5 ~
谢谢 ANNY的回复,我的时钟是这样的:
; D' z7 a) `; R/ h1 Y; _
用函数显示出来看看,类似标准库的RCC_GetClocksFreq(&RCC_Clocks);//用于查看单片机运行频率
emc_ytm 回答时间:2017-7-20 20:59:37

$ p' Q! M9 L5 @5 V4 k: R/ l不错,感谢,/ P1 W/ b2 y& h2 O/ C) |
对于报告描述符还是有不明白,
0 i6 j$ q, b5 A. J
+ x; T9 Z% |/ P8 K9 u: v; v1 a% ~
emc_ytm 回答时间:2017-7-21 17:42:03
& J5 ~) J/ X# \! n/ V/ d

" x" F9 }  f1 E. }6 a+ k好的,谢谢!!!
; e3 H* R7 O. E# ^7 V. D" y$ F  
emc_ytm 回答时间:2017-7-21 19:34:43
请问一下,你的硬件是如何接线的,
- U3 X5 z0 i* C1 f) X) B我的现在连上去都是发现为低速设备. Z  f  p% A/ d" b+ x
40h Should be 8 bytes for low-speed devices     --提示这一个,所以不正常) v+ [/ G3 T& j: O  D, S& j9 g
我现在仅是使用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 的线太长了,   
/ C- X$ L7 ~; g. \' \+ J) }. ~
( K( H& B# L5 i6 f" Y) K* L 缩短一些接到电脑上就可以了。/ g; y! M$ ^( k) E# h

! c5 E  B3 X9 c6 h2 D+ Q- b, c9 Z
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版