本帖最后由 anny 于 2017-4-13 15:04 编辑 0 U5 r9 ?* {( i' P' t, y ! a3 b9 l) {: `0 w% h+ B 一直懒得去看USB的资料,却又对USB相当好奇,今天就拿块板子做一下USB HID的实验。板子的芯片是STM32F103RCT6 ,使用STM32CUbeMX配置相当简单:5 {3 \; l. @" A8 N9 @' _ 1、配置时钟、USB选项及管脚功能,有二个LED和二个按键 2、选择USB功能为HID% }* [, r" R! }4 A9 t' `3 { % A; y3 r( A+ s. C/ I$ H 3、配置时钟 4、配置IO口功能 1 |& F6 k: S# |: x: R 这样就完成了配置,再生成工程,整个过程不到1分钟。 当然还要在工程里面添加必要的应用程序:! w* T$ `9 F& e7 L+ W0 g2 ? 1、在usbd_custom_hid_if.c文件里面的__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS数组里面添加如下内容:5 e1 S4 g4 _# z5 L; H+ x1 k 2、在usbd_custom_hid_if.c文件里面的int8_t CUSTOM_HID_OutEvent_FS添加如下程序: 1 S4 x) S5 M& j 3、在main函数里面添加如下内容: 4 i7 p1 V* B* |/ ? 这样可能有点不明不白,可以参考附件的PDF教程及工程文件,接下来看看效果:' e+ P8 L( X, G8 c 上位机软件:5 Q- f5 m1 \2 B& y# @ 1、连接图: + N' E% q. o* h. H" w, [* Q3 ? 2、上位机控制板子上的LED: : Y5 W8 g7 e7 m+ \% N/ @7 P 3、按键信号反馈给上位机:, w, V7 H( a2 n* `8 y" z$ q 附件: |
参与人数 6 | ST金币 +8 | 收起 理由 |
---|---|---|
ddyyzz123 | -1 | 很给力! |
stefy | -1 | 感谢分享 |
a15815760472 | -1 | 很给力! |
gla19930103 | -1 | |
子曰好人 | + 10 | 很给力! |
努力的人 | + 2 |
你可以看看这个
$ u+ E& E- E/ M8 p
../Src/usbd_custom_hid_if.c(48): error: #146: too many initializer values 直接复制过来的不知道错在哪?
$ D6 Q# F2 W3 S* b1 a$ w" x. t) S" l
请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设备管理器中提示“unknown device”。( ?+ \# j* y( P V8 K6 K& f
能指点下不?+ _3 U, B& i3 d* d8 e/ I
查一下是不是分频不对
éé¢å¥½å没æUSBæ¶éçé ç½®
用函数显示出来看看,类似标准库的RCC_GetClocksFreq(&RCC_Clocks);//用于查看单片机运行频率
不错,感谢,
对于报告描述符还是有不明白,7 D# S1 q* n' ~4 Q$ H0 [
( L! [* m, N, R- l# H5 k
* ], g& p7 f4 ]3 B: I
好的,谢谢!!!# u6 Z; K( X# g" w/ T, t2 ?
我的现在连上去都是发现为低速设备& z" A& z5 N/ h: k2 u$ d1 @1 D
40h Should be 8 bytes for low-speed devices --提示这一个,所以不正常
我现在仅是使用DP 也就是D+ 上拉1.5K 到3.3V。
. ]8 I% [8 o* N p7 n- ~
缩短一些接到电脑上就可以了。9 e R9 l% N& O" ^