STM32F103 CubeMX 使用USB生成键盘设备
创作时间:
作者:
@小白创作中心
STM32F103 CubeMX 使用USB生成键盘设备
引用
CSDN
1.
https://m.blog.csdn.net/chen1658137632/article/details/137043447
STM32F103 CubeMX 使用USB生成键盘设备
基础信息
软件版本:
- stm32cubmx:6.2
- keil 5
硬件:
- stm32F103C8T6最小系统板,如下图所示的最简原理图
HID8个数组各自的功能
生成代码
配置信息的时候,主要配置了外部时钟,debug口,USB这三个。
代码编写
添加申明信息
这部分第一个是因为要调用“usbd_hid”中的函数所以引用
另外也需要使用到usb是这个数据
/* USER CODE BEGIN Includes */
# include "usbd_hid.h"
extern USBD_HandleTypeDef hUsbDeviceFS;
/* USER CODE END Includes */
main 函数编写
这里调用函数:USBD_HID_SendReport,发送数据给电脑。
需要注意的是,如果按键松开了,则需要将按键松开的信息发送过去。否则的话会默认按键一直按下。从而产生多余的信息。
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USB_DEVICE_Init();
uint8_t HID_Buffer[8] = {0};
uint8_t HID_Buffer_clean[8] = {0};
while (1)
{
HID_Buffer[2] = 0x04;
HID_Buffer[3] = 0x05;
HID_Buffer[4] = 0x06;
HID_Buffer[5] = 0x1C;
HID_Buffer[7] = 0x1D;
USBD_HID_SendReport(&hUsbDeviceFS, HID_Buffer, sizeof(HID_Buffer));
HAL_Delay(20);
USBD_HID_SendReport(&hUsbDeviceFS, HID_Buffer_clean, sizeof(HID_Buffer_clean));
HAL_Delay(1000);
}
}
HID 修改
1. 修改报文描述符
下载 HID Descriptor Tool (DT) HID描述符工具:
- 官网下载:https://usb.org/sites/default/files/documents/dt2_4.zip
- 百度网盘:https://pan.baidu.com/s/1ayjdQtc7e9NWwYJqdp0pXA?pwd=4ghb 提取码:4ghb
/*修改usbd_hid.c中的报告设备描述符*/
__ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] __ALIGN_END =
{
0x05, 0x01, // USAGE_PAGE (Generic Desktop) //63
0x09, 0x06, // USAGE (Keyboard)
0xa1, 0x01, // COLLECTION (Application)
0x05, 0x07, // USAGE_PAGE (Keyboard)
0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl)
0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x08, // REPORT_COUNT (8)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x95, 0x01, // REPORT_COUNT (1)
0x75, 0x08, // REPORT_SIZE (8)
0x81, 0x03, // INPUT (Cnst,Var,Abs)
0x95, 0x05, // REPORT_COUNT (5)
0x75, 0x01, // REPORT_SIZE (1)
0x05, 0x08, // USAGE_PAGE (LEDs)
0x19, 0x01, // USAGE_MINIMUM (Num Lock)
0x29, 0x05, // USAGE_MAXIMUM (Kana)
0x91, 0x02, // OUTPUT (Data,Var,Abs)
0x95, 0x01, // REPORT_COUNT (1)
0x75, 0x03, // REPORT_SIZE (3)
0x91, 0x03, // OUTPUT (Cnst,Var,Abs)
0x95, 0x06, // REPORT_COUNT (6)
0x75, 0x08, // REPORT_SIZE (8)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x65, // LOGICAL_MAXIMUM (101)
0x05, 0x07, // USAGE_PAGE (Keyboard)
0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated))
0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application)
0x81, 0x00, // INPUT (Data,Ary,Abs)
0xc0, // END_COLLECTION
};
2 修改 “usbd_hid.h” 中的申明文件
#include “usbd_hid.h” 文件中的申明文件,修改一下。
#define HID_MOUSE_REPORT_DESC_SIZE 63U
本文原文来自CSDN
热门推荐
“青安心”走进胶州:专业心理服务助力家庭矛盾调解
湖南今冬降雪时间受厄尔尼诺影响!
2025年湖南首场降雪来袭!湘西北局地暴雪,这些地方将受影响
张家界天门山初雪,湖南冬游打卡地推荐!
成都自驾游大理丽江,这两条路线最值得打卡!
洱海美景刷屏朋友圈!成都出发必打卡
故宫600年:揭秘观音造像的千年变迁
法兰西军事博物馆:路易十三的火枪传奇
法兰西军事博物馆的历史文物探秘之旅
建军90周年特展:军博必打卡展品推荐
发烧吃了布洛芬身上酸痛?原因及应对方法解析
周末打卡!木兰天池超全攻略
武汉周边自驾游:神农架与武当山的文化之旅
节后入睡困难?让你“沾床就睡”的小技巧,一定要试一试~
喝酒后一直打嗝怎么办
自驾游必备:对讲机让你的旅程更安全便捷
北京京郊7个古村大揭秘,隐藏的清幽宝地
《喜羊羊与灰太狼之异国大营救》:反派角色塑造的秘密
《喜羊羊与灰太狼》:一部动画片中的育儿智慧
并非绝症:小细胞肺癌患者也能拥有超过5年,甚至10年的生存机会!
龙岩永定土楼的梅菜扣肉:一道菜里的客家文化
在家也能做出米其林级美味:梅菜扣肉制作全攻略
带娃逛国博,这些小贴士你get了吗?
国博打卡:十大镇馆之宝不容错过!
国博延时开放,夜游攻略出炉!
《世界奇妙物语》:不可错过的最佳怪诞故事精选
冬季打卡:乐山&青城山,周末游新宠!
成都周边鹰头咀徒步攻略
邛崃古韵山水游:从临邛古城到天台山
饭量小的人或更长寿?研究发现:少吃确实可以延缓衰老!