本帖最后由 anny 于 2017-4-13 15:04 编辑 4 W8 {1 f2 Z% A* H " e; ^0 h. t' V6 c1 H 一直懒得去看USB的资料,却又对USB相当好奇,今天就拿块板子做一下USB HID的实验。板子的芯片是STM32F103RCT6 ,使用STM32CUbeMX配置相当简单:/ U, I8 @/ n6 H' A$ T' L 1、配置时钟、USB选项及管脚功能,有二个LED和二个按键 \: v+ C+ `; @5 Z d0 E) d$ F1 R 2、选择USB功能为HID - M1 k# Z$ m3 p4 y+ S5 ~; b, p" M 3、配置时钟 4、配置IO口功能 $ I) D" k" J0 Z: z4 ], a! _% M" W 这样就完成了配置,再生成工程,整个过程不到1分钟。9 Y$ {2 J; U7 `1 i$ s, R 当然还要在工程里面添加必要的应用程序: 1、在usbd_custom_hid_if.c文件里面的__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS数组里面添加如下内容: 2、在usbd_custom_hid_if.c文件里面的int8_t CUSTOM_HID_OutEvent_FS添加如下程序: * h& J2 [7 Y5 j2 P Y7 ]/ s 3、在main函数里面添加如下内容:: E8 i3 M# z/ X3 _0 b $ g t- F' y `% U* A9 `% w: V 这样可能有点不明不白,可以参考附件的PDF教程及工程文件,接下来看看效果:, C- G/ l6 H" d 上位机软件: 1、连接图:" s, b( f4 P# c 2、上位机控制板子上的LED: + O: _( V# A6 n/ N: c9 p, j8 i 3、按键信号反馈给上位机:" G8 Y, Q: L. s* v5 C( l* k6 u& G, m + s- u& D0 _* R& b! P; { 附件:+ f1 j( f; k( c |
参与人数 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 直接复制过来的不知道错在哪?
请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设备管理器中提示“unknown device”。5 ^: X3 N: V% j: e6 P$ D
能指点下不?
查一下是不是分频不对
éé¢å¥½å没æUSBæ¶éçé ç½®
用函数显示出来看看,类似标准库的RCC_GetClocksFreq(&RCC_Clocks);//用于查看单片机运行频率
不错,感谢,
对于报告描述符还是有不明白,# H6 E: f. t- j. x! U" h
8 r' i) X' C q6 M/ w3 H
好的,谢谢!!!
我的现在连上去都是发现为低速设备
40h Should be 8 bytes for low-speed devices --提示这一个,所以不正常9 ^& ]# \, F9 W% t
我现在仅是使用DP 也就是D+ 上拉1.5K 到3.3V。
缩短一些接到电脑上就可以了。
! P0 w! r5 Z2 T4 I- Q6 L