本帖最后由 anny 于 2017-4-13 15:04 编辑 一直懒得去看USB的资料,却又对USB相当好奇,今天就拿块板子做一下USB HID的实验。板子的芯片是STM32F103RCT6 ,使用STM32CUbeMX配置相当简单:/ p8 G4 P, h# K4 ~6 z% Y 1、配置时钟、USB选项及管脚功能,有二个LED和二个按键 2、选择USB功能为HID 3、配置时钟8 J8 L1 }, n! R6 o' c' H8 j9 n' u9 R $ S8 d: L1 \: Y2 L 4、配置IO口功能 这样就完成了配置,再生成工程,整个过程不到1分钟。 当然还要在工程里面添加必要的应用程序:( h/ e+ a5 E" c9 P 1、在usbd_custom_hid_if.c文件里面的__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS数组里面添加如下内容:' a& M5 t1 g, A, p& r! g; k: ? 2、在usbd_custom_hid_if.c文件里面的int8_t CUSTOM_HID_OutEvent_FS添加如下程序:5 o! u5 \$ o% g3 |6 m 3、在main函数里面添加如下内容: 这样可能有点不明不白,可以参考附件的PDF教程及工程文件,接下来看看效果:: ^. A0 x2 k/ P- N& K' P 上位机软件:3 b( o I6 s& t. o3 D/ E# B1 C; \ 1、连接图:, \* B9 p; p' n0 Y i 5 J, K8 y- r; i3 ? 2、上位机控制板子上的LED: 2 Y' d) ~2 x* x( \ 3、按键信号反馈给上位机:5 Q+ q1 O. u2 ^3 m1 [' O8 f* W % J2 E6 q: x4 k3 O6 k2 E- U 附件: |
参与人数 6 | ST金币 +8 | 收起 理由 |
---|---|---|
ddyyzz123 | -1 | 很给力! |
stefy | -1 | 感谢分享 |
a15815760472 | -1 | 很给力! |
gla19930103 | -1 | |
子曰好人 | + 10 | 很给力! |
努力的人 | + 2 |
你可以看看这个
# G% b8 K' c# y% {/ Q% {
../Src/usbd_custom_hid_if.c(48): error: #146: too many initializer values 直接复制过来的不知道错在哪?
+ R& C9 \% J1 r& u( l4 G
请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设备管理器中提示“unknown device”。& L# B' M9 K) T: R
能指点下不?4 `. o0 N( V1 W4 Y% F4 x
查一下是不是分频不对
éé¢å¥½å没æUSBæ¶éçé ç½®
用函数显示出来看看,类似标准库的RCC_GetClocksFreq(&RCC_Clocks);//用于查看单片机运行频率
不错,感谢,: O: s& E7 D9 P; e/ F1 L5 m
对于报告描述符还是有不明白,) w% Q; \% y! ^: }4 |+ V5 K
& a3 ~, H! _ X% R/ O R, l0 T/ @* y
好的,谢谢!!!
我的现在连上去都是发现为低速设备9 L* E( S. ]" _- a5 Y3 w
40h Should be 8 bytes for low-speed devices --提示这一个,所以不正常
我现在仅是使用DP 也就是D+ 上拉1.5K 到3.3V。
5 \$ c* n! _0 c8 ]; ~0 l
缩短一些接到电脑上就可以了。% J0 o5 p2 {* y& B