本帖最后由 anny 于 2017-4-13 15:04 编辑 1 t+ F4 F6 I Y0 `( _4 g 一直懒得去看USB的资料,却又对USB相当好奇,今天就拿块板子做一下USB HID的实验。板子的芯片是STM32F103RCT6 ,使用STM32CUbeMX配置相当简单: 1、配置时钟、USB选项及管脚功能,有二个LED和二个按键 2、选择USB功能为HID ) f$ f( B1 J/ v 3、配置时钟- `: s* F) b+ w8 N 4、配置IO口功能' @1 P3 H3 s! D+ @, d 这样就完成了配置,再生成工程,整个过程不到1分钟。/ m' H% X- w4 o 当然还要在工程里面添加必要的应用程序: 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添加如下程序: 3、在main函数里面添加如下内容: 1 p a- }1 Q$ a; c1 F7 f/ N( E4 F 这样可能有点不明不白,可以参考附件的PDF教程及工程文件,接下来看看效果: 上位机软件:6 Z; ^# c" X! Y* D5 y! m1 } 1、连接图: 2、上位机控制板子上的LED: 1 k0 I. V! q" D1 @: |0 D; J 3、按键信号反馈给上位机:9 h; \6 U' h2 W* s1 U, o3 B ! b2 e( j5 N9 e' G* y! q/ ?1 U5 z 附件:( o: z! o6 m; C K, Y2 L |
参与人数 6 | ST金币 +8 | 收起 理由 |
---|---|---|
ddyyzz123 | -1 | 很给力! |
stefy | -1 | 感谢分享 |
a15815760472 | -1 | 很给力! |
gla19930103 | -1 | |
子曰好人 | + 10 | 很给力! |
努力的人 | + 2 |
你可以看看这个
. E. ^( x" \% m" V' T7 C! V
../Src/usbd_custom_hid_if.c(48): error: #146: too many initializer values 直接复制过来的不知道错在哪?
请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设备管理器中提示“unknown device”。3 F# h. ~3 B1 w9 `
能指点下不?
查一下是不是分频不对
t& Q! X" f1 F! K
éé¢å¥½å没æUSBæ¶éçé ç½®
用函数显示出来看看,类似标准库的RCC_GetClocksFreq(&RCC_Clocks);//用于查看单片机运行频率
不错,感谢,+ Z) e: }& x0 A R. A
对于报告描述符还是有不明白,8 F% f0 g: p' ~& C* e; p7 ~
, T; s. G9 }5 H
好的,谢谢!!!$ Q- H1 L& v; ^% r+ Z5 G |7 h
我的现在连上去都是发现为低速设备
40h Should be 8 bytes for low-speed devices --提示这一个,所以不正常
我现在仅是使用DP 也就是D+ 上拉1.5K 到3.3V。
缩短一些接到电脑上就可以了。0 f, X) c* e0 p( _) k
2 z! W/ H- U, L% {" ` x9 q- C