本帖最后由 anny 于 2017-4-13 15:04 编辑 & Y* G& Y+ N! V! u0 ?( S8 r2 @( K 一直懒得去看USB的资料,却又对USB相当好奇,今天就拿块板子做一下USB HID的实验。板子的芯片是STM32F103RCT6 ,使用STM32CUbeMX配置相当简单:6 U- u, c+ p* U8 @3 f( A* H& }3 S 1、配置时钟、USB选项及管脚功能,有二个LED和二个按键 ( v( G3 r: S6 z" c& u u' p 2、选择USB功能为HID$ N1 }, X8 ~1 x' P 3、配置时钟 4、配置IO口功能% `& h _( |: T' m4 K , J& W/ Z' q- K3 n, E 这样就完成了配置,再生成工程,整个过程不到1分钟。! u* A% Y8 B. R+ w) }" [0 `% g 当然还要在工程里面添加必要的应用程序: 1、在usbd_custom_hid_if.c文件里面的__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS数组里面添加如下内容:: M" B0 D [* S* a/ f 2、在usbd_custom_hid_if.c文件里面的int8_t CUSTOM_HID_OutEvent_FS添加如下程序: + F& @( ^ S2 h6 ?6 e* Z0 _) Y 3、在main函数里面添加如下内容:1 j0 Q2 u/ r @) v * O2 T' N; d$ ` 这样可能有点不明不白,可以参考附件的PDF教程及工程文件,接下来看看效果: 上位机软件: 1、连接图:" Q$ ]; ?" t8 m' H6 M 2、上位机控制板子上的LED:& O+ e' E2 K! i) X2 b / E7 {5 u- ]0 b" m0 A- _+ ^ 3、按键信号反馈给上位机:# _5 w! G: W. V 附件: |
参与人数 6 | ST金币 +8 | 收起 理由 |
---|---|---|
ddyyzz123 | -1 | 很给力! |
stefy | -1 | 感谢分享 |
a15815760472 | -1 | 很给力! |
gla19930103 | -1 | |
子曰好人 | + 10 | 很给力! |
努力的人 | + 2 |
你可以看看这个
% J7 c' Q( ~- `. U8 l
../Src/usbd_custom_hid_if.c(48): error: #146: too many initializer values 直接复制过来的不知道错在哪?
请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设备管理器中提示“unknown device”。$ Q- s" u' k5 R9 }: B
能指点下不?! N3 u' O; B- q
查一下是不是分频不对
éé¢å¥½å没æUSBæ¶éçé ç½®
用函数显示出来看看,类似标准库的RCC_GetClocksFreq(&RCC_Clocks);//用于查看单片机运行频率
不错,感谢,
对于报告描述符还是有不明白,
& r+ T) c; j; h: v+ J3 E
好的,谢谢!!! E3 m8 D$ O7 @0 Y8 @ }
我的现在连上去都是发现为低速设备
40h Should be 8 bytes for low-speed devices --提示这一个,所以不正常4 J) g; Y. c- j- M7 o, ]
我现在仅是使用DP 也就是D+ 上拉1.5K 到3.3V。
缩短一些接到电脑上就可以了。2 w7 z B/ m6 K' I. T4 K
3 W$ L" ?4 R8 D; e$ m; q