本帖最后由 anny 于 2017-4-13 15:04 编辑 5 ^1 H: s& [( D6 S 一直懒得去看USB的资料,却又对USB相当好奇,今天就拿块板子做一下USB HID的实验。板子的芯片是STM32F103RCT6 ,使用STM32CUbeMX配置相当简单:; [! S$ i0 x6 P& N+ y2 G 1、配置时钟、USB选项及管脚功能,有二个LED和二个按键 , M3 M0 D+ k) m: T2 @. Q 2、选择USB功能为HID. K$ H7 a3 R/ ~; b6 M0 E * S3 g5 ~/ b, f& s 3、配置时钟 4、配置IO口功能; L& m$ H8 ~: h8 ^; Z% M% ? 这样就完成了配置,再生成工程,整个过程不到1分钟。 当然还要在工程里面添加必要的应用程序:9 F. r1 Z+ X5 b3 ` 1、在usbd_custom_hid_if.c文件里面的__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS数组里面添加如下内容:9 j! G5 W$ N+ l 2、在usbd_custom_hid_if.c文件里面的int8_t CUSTOM_HID_OutEvent_FS添加如下程序:9 `( M0 p. h4 U* b 3、在main函数里面添加如下内容:# A7 y, i5 H" Z5 @" U0 I$ M6 Z& R 1 [5 L/ P& K3 T; t( | 这样可能有点不明不白,可以参考附件的PDF教程及工程文件,接下来看看效果: 上位机软件:! i, `- s9 g/ n ^+ P6 |3 }0 @1 q 1、连接图:9 @- q6 k6 L: g3 _' y) w 2、上位机控制板子上的LED: $ i4 N! g. V3 X3 G8 B* f& f U 3、按键信号反馈给上位机: M2 Z7 A% a+ e6 t- C / X& Q( B/ n4 z) I4 N* e+ e 附件:& x* y2 j0 w9 E" G7 V1 E; w |
参与人数 6 | ST金币 +8 | 收起 理由 |
---|---|---|
ddyyzz123 | -1 | 很给力! |
stefy | -1 | 感谢分享 |
a15815760472 | -1 | 很给力! |
gla19930103 | -1 | |
子曰好人 | + 10 | 很给力! |
努力的人 | + 2 |
你可以看看这个
& j, c' \7 h6 `% i; `
../Src/usbd_custom_hid_if.c(48): error: #146: too many initializer values 直接复制过来的不知道错在哪?
请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设备管理器中提示“unknown device”。
能指点下不?+ Q% u% l# m, a. c' a: J
查一下是不是分频不对
éé¢å¥½å没æUSBæ¶éçé ç½®
用函数显示出来看看,类似标准库的RCC_GetClocksFreq(&RCC_Clocks);//用于查看单片机运行频率
不错,感谢,
对于报告描述符还是有不明白,% ~7 P! y/ ?# k% _9 K' n3 ?
5 [& E# M5 w4 P; Q$ h0 d5 v
好的,谢谢!!!( s4 E$ x* e; A% S; s
我的现在连上去都是发现为低速设备) c. |" f: g) U) D) B
40h Should be 8 bytes for low-speed devices --提示这一个,所以不正常
我现在仅是使用DP 也就是D+ 上拉1.5K 到3.3V。
缩短一些接到电脑上就可以了。