本帖最后由 anny 于 2017-4-13 15:04 编辑 6 W# K/ h3 n8 }/ b( x9 J' h 一直懒得去看USB的资料,却又对USB相当好奇,今天就拿块板子做一下USB HID的实验。板子的芯片是STM32F103RCT6 ,使用STM32CUbeMX配置相当简单:8 @& \7 H' Y% _2 p r* \5 z; b 1、配置时钟、USB选项及管脚功能,有二个LED和二个按键1 c, ^5 T; |( }5 n. k0 |4 h 2、选择USB功能为HID, P- u8 g w/ ]* l * Q4 ^" K; @' d8 E6 ?- [2 R1 x 3、配置时钟. B; s. R e' h. t9 t. { 4、配置IO口功能 7 z7 y; w$ m6 H 这样就完成了配置,再生成工程,整个过程不到1分钟。: ?$ a$ S1 l4 [- e! E 当然还要在工程里面添加必要的应用程序:& G3 J+ u: E+ B) l8 W* U# F8 q5 A 1、在usbd_custom_hid_if.c文件里面的__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS数组里面添加如下内容:. f5 K! i! O$ |) w9 q3 L 2、在usbd_custom_hid_if.c文件里面的int8_t CUSTOM_HID_OutEvent_FS添加如下程序: E b- a- _0 m5 n2 Y$ ^$ } 3、在main函数里面添加如下内容:/ Q5 ]% _6 s" D" f; r, m 0 s6 A) H6 B5 W; r+ K- \1 c ^* N) [, q 这样可能有点不明不白,可以参考附件的PDF教程及工程文件,接下来看看效果:* ?+ s7 c6 l# y 上位机软件:1 e- ^+ v% F5 G3 N- S 1、连接图: ) O6 P1 L' N0 T) x, ^/ G0 D7 W 2、上位机控制板子上的LED:5 G' L4 S9 Y7 p( F# t( A' i 0 r& E, n$ n0 X! {% b 3、按键信号反馈给上位机: % ]7 h9 D6 q( w; y% u4 c 附件:6 E) q; y' [7 M) w |
参与人数 6 | ST金币 +8 | 收起 理由 |
---|---|---|
ddyyzz123 | -1 | 很给力! |
stefy | -1 | 感谢分享 |
a15815760472 | -1 | 很给力! |
gla19930103 | -1 | |
子曰好人 | + 10 | 很给力! |
努力的人 | + 2 |
你可以看看这个
../Src/usbd_custom_hid_if.c(48): error: #146: too many initializer values 直接复制过来的不知道错在哪?
" i% q( k8 F6 ~) W3 W
请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设备管理器中提示“unknown device”。
能指点下不?
查一下是不是分频不对
. W# E. ]4 W X: i+ u
éé¢å¥½å没æUSBæ¶éçé ç½®
用函数显示出来看看,类似标准库的RCC_GetClocksFreq(&RCC_Clocks);//用于查看单片机运行频率
不错,感谢,# T' F& K, R- n. I
对于报告描述符还是有不明白,
: \$ Q( }+ j0 N8 f- N
好的,谢谢!!!5 Z3 z# J4 Q6 Z& u; V& I8 G! U
我的现在连上去都是发现为低速设备3 Q2 O' y! s+ V& y4 E
40h Should be 8 bytes for low-speed devices --提示这一个,所以不正常6 e3 B9 E1 _1 { n4 o
我现在仅是使用DP 也就是D+ 上拉1.5K 到3.3V。
# T( J; r0 W7 H0 U. Z! f4 k- E
缩短一些接到电脑上就可以了。