本帖最后由 anny 于 2017-4-13 15:04 编辑 % {8 C. c) J( M8 C- Z- `7 ~ ! P6 x! E# S* z! ~ 一直懒得去看USB的资料,却又对USB相当好奇,今天就拿块板子做一下USB HID的实验。板子的芯片是STM32F103RCT6 ,使用STM32CUbeMX配置相当简单:% [- S" M4 w. R! { 1、配置时钟、USB选项及管脚功能,有二个LED和二个按键 a; B b# p0 E! F; g 8 O/ X! C% U6 ~" g+ N% e7 C' T1 _ 2、选择USB功能为HID: f9 k. E$ X b9 o2 l - l( w! |" z+ I5 _" X 3、配置时钟' z, j0 R' |8 j% b 4、配置IO口功能 r, s; Y8 J9 } I) v ( L- y+ C) V- q 这样就完成了配置,再生成工程,整个过程不到1分钟。0 Q0 Q0 x- L7 d! b+ x7 N) T. _& e 当然还要在工程里面添加必要的应用程序:# L, N$ e/ R$ ?7 u 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函数里面添加如下内容: 这样可能有点不明不白,可以参考附件的PDF教程及工程文件,接下来看看效果: \" T2 @4 y2 k$ f* A$ Z8 J4 x 上位机软件:! _. {! V; P& E \3 W6 J 1、连接图:5 `/ {$ {4 i9 Q; b' O 2、上位机控制板子上的LED: , Q( v3 W" P5 c5 M 3、按键信号反馈给上位机: 附件:8 c K% E3 s1 M/ L, _ |
参与人数 6 | ST金币 +8 | 收起 理由 |
---|---|---|
ddyyzz123 | -1 | 很给力! |
stefy | -1 | 感谢分享 |
a15815760472 | -1 | 很给力! |
gla19930103 | -1 | |
子曰好人 | + 10 | 很给力! |
努力的人 | + 2 |
你可以看看这个
- w% O5 k) ]5 u+ S7 R" {
../Src/usbd_custom_hid_if.c(48): error: #146: too many initializer values 直接复制过来的不知道错在哪?
$ M1 C+ O& j2 i- y
请教下,我用的是STM32F407VETx,也用一样的开发环境及工具,照上面的步骤生成了工程,连接电脑运行后,在设备管理器中提示“unknown device”。" ?0 i H! P+ j
能指点下不?
查一下是不是分频不对
éé¢å¥½å没æUSBæ¶éçé ç½®
用函数显示出来看看,类似标准库的RCC_GetClocksFreq(&RCC_Clocks);//用于查看单片机运行频率
不错,感谢,. ` V+ F6 U& z7 [3 [$ ^
对于报告描述符还是有不明白,
好的,谢谢!!!$ \4 l% i2 r6 ]' l" ?8 K& r
我的现在连上去都是发现为低速设备2 [% H( _% f/ `1 p) Q
40h Should be 8 bytes for low-speed devices --提示这一个,所以不正常
我现在仅是使用DP 也就是D+ 上拉1.5K 到3.3V。
缩短一些接到电脑上就可以了。
7 f" V3 Y9 ?9 h2 c