1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
开发环境
单片机:stm32f103c8t6 软件 :keil (编写代码),stm32cubemx(初始化),HID Descriptor tool(生成报文),u*** bound(抓包) STM32cubemx初始化 经典时钟 经典 swd 5ms的 tim2 (这个时间很重要,记住)(可自行修改) 勾上中断 GPIO 我没写矩阵扫描,最简单的每个按键对应一个gpio ,当然可改成矩阵,(相信看到这的大佬都会) 勾上u*** custom hid 参数 ps:提前说明,一下参数可以在keil 工程里面修改 第一个参数 很重要
第二个参数 报文个数
第三个参数 输出缓存,选最大 第四个参数 最大支持的hid 设备的接口数,应为现在只有键盘,所以1就行, 如果是需要,同时键盘,鼠标,手柄啥的,根据数量选择即可 后面参数保持默认即可 这些都是,接入电脑后的名称参数等,不该也行 最后主要 u***的时钟 48M 然后生成初始化代码 hid 描述符 具体,我其实也只是一知半解,这里说明只是我个人的理解。(大佬轻喷)
keil代码编写 参数修改 在u***d_conf.h中可以修改 复制报文 在u***d_custom_hid_if.c 数据发送 在使用到 USBD_CUSTOM_HID_SendReport()的函数前加上 头文件和 句柄声明 例: #include "u***d_customhid.h" extern USBD_HandleTypeDef hU***DeviceFS; /* 其他代码 */ SBD_CUSTOM_HID_SendReport(&USB_OTG_dev, buff, 2); 非常重要的一点就是要及时弹出 因为缓存区不会自己刷新,所以假如我们发送数据到缓存区后,没有清 0,那么 ,以5ms为例, 按下数字 1 后,会以每秒20个“1”打印在电脑屏幕上。 所以要及时弹出即清零 举例: buff[0]=0x01; buff[1]=0x00; USBD_CUSTOM_HID_SendReport(&USB_OTG_dev, buff, 2); HAL_Delay(5); buff[0]=0x00; buff[1]=0x00; USBD_CUSTOM_HID_SendReport(&USB_OTG_dev, buff, 2); HAL_Delay(5); 当然实际中不会这样 傻傻的用 delay延时 定时器会更为好用 下一篇 因为代码部分,用了较为系统的封装,代码太多了,,,所以另起一篇来讲,当然dalao可以忽略。。 有啥问题可留言说明。 dae::2021.9.9 autho:_zs_dawn |
|
|
|
只有小组成员才能发言,加入小组>>
3323 浏览 9 评论
3000 浏览 16 评论
3498 浏览 1 评论
9073 浏览 16 评论
4093 浏览 18 评论
1198浏览 3评论
614浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
603浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2343浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1902浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-31 00:19 , Processed in 1.120880 second(s), Total 80, Slave 59 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号