登录/注册

STM32CUBEMX 模拟键盘

STM32CUBEMX 模拟键盘

更多

使用 STM32CubeMX 配置 USB HID 键盘的步骤如下:


1. 硬件准备


2. STM32CubeMX 配置

  1. 创建工程

    • 打开 STM32CubeMX,选择对应型号的芯片。
  2. 配置时钟

    • Clock Configuration 中启用外部晶振(HSE),并确保 USB 时钟为 48MHz(USB 必须精确的时钟)。
  3. 启用 USB

    • Connectivity 选项卡中启用 USB,选择 Device (FS) 模式。
    • Middleware 中选择 USB_DEVICE,类为 Human Interface Device (HID)
  4. 配置 HID 描述符

    • Project Manager > Code Generator 中勾选生成 .c/.h 文件。
    • USB_DEVICE > Class For IP > HID 中,确保报告描述符正确(参考默认键盘描述符)。

3. 生成代码

点击 Generate Code,生成 Keil/IAR/STM32IDE 工程。


4. 添加键盘逻辑

在生成的代码中修改以下部分:

(1) 定义 HID 报告结构体

usbd_hid.h 中添加键盘报告描述符:

typedef struct {
  uint8_t modifiers;  // 例如 Ctrl/Shift
  uint8_t reserved;
  uint8_t keycode[6]; // 最多支持6个按键
} HID_KeyboardReport_TypeDef;

(2) 发送按键事件

main.c 中添加发送按键的函数:

void Send_Key(uint8_t key) {
  HID_KeyboardReport_TypeDef report;
  report.modifiers = 0;      // 无修饰键
  report.reserved = 0;
  report.keycode[0] = key;  // 按下指定键
  for (int i=1; i<6; i++) report.keycode[i] = 0; // 其他键置零

  USBD_HID_SendReport(&hUsbDeviceFS, (uint8_t*)&report, sizeof(report));
  HAL_Delay(20);  // 短暂延时确保发送完成
  report.keycode[0] = 0;  // 松开按键
  USBD_HID_SendReport(&hUsbDeviceFS, (uint8_t*)&report, sizeof(report));
}

(3) 触发按键事件

main 函数的主循环中调用:

while (1) {
  if (按键触发条件) {  // 例如 GPIO 输入检测
    Send_Key(HID_KEY_A);  // 发送字母 'A' 的键码
    HAL_Delay(100);
  }
}

5. HID 键码参考

常用键码定义(参考 usbd_hid.h):

#define HID_KEY_A        0x04
#define HID_KEY_B        0x05
#define HID_KEY_ENTER    0x28
#define HID_KEY_SPACE    0x2C
#define HID_KEY_CTRL_LEFT 0xE0

6. 注意事项


示例工程

可在 GitHub 搜索 STM32 USB HID Keyboard 参考开源项目,或参考 STM32CubeMX 自带的 HID_Standalone 示例。

STM8CubeMXSTM32CubeMX功能一样吗?

STM8CubeMX和STM32CubeMX功能一样吗?

2023-10-31 16:59:05

基于STM32U5 的 STM32CubeMX环境搭建

基于STM32U5 的 STM32CubeMX环境搭建

2023-09-21 17:35:00

STM32CubeMx入门教程(4):PWM应用

导语“使用STM32CubeMx配置定时器输出PWM波,生成初始化代码。”

2023-07-11 15:23:59

STM32CubeMX用户手册

STM32CubeMX用户手册免费下载。

资料下载 freelab2021 2022-02-22 14:03:54

STM32CubeMX | STM32基于HAL实现USB模拟U盘

STM32CubeMX | STM32基于HAL实现USB模拟U盘目录STM32Cub

资料下载 自我清欢 2021-12-28 20:04:32

STM32CubeMX 窗口及工具介绍

STM32CubeMX 系列教程之 STM32CubeMX 窗口及 STM32PackCreator 工具介绍,内附详细图文介绍。

资料下载 佚名 2021-12-14 18:51:19

STM32学习之STM32cubeMX软件安装与使用(附STM32cubeMX5.2.1下载地址)

STM32学习之STM32cubeMX软件安装与使用(附STM32cubeMX5.2.1下载地址)

资料下载 佚名 2021-12-07 11:51:06

STM32cubeMX的串口使用教程免费下载

本文档的主要内容详细介绍的是STM32cubeMX的串口使用教程免费下载。

资料下载 佚名 2019-12-03 11:31:50

STM32CubeMX简介和安装使用方法

STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。

2023-06-07 15:43:00

STM32CUBEMX(4)--GPIO输出

本篇文章主要介绍如何使用STM32CubeMX对红外波形进行GPIO输出,并LED显示。

2022-11-14 15:43:19

STM32CUBEMX(1)--PWM

本篇文章主要介绍如何使用STM32CubeMX输出PWM,并制作呼吸灯效果。

2022-11-14 15:29:15

浅谈STM32CubeMX使用方法及功能介绍

STM32CubeMX使用方法及功能介绍

2020-03-25 11:02:11

浅谈stm32cubemx安装教程

STM32CubeMX介绍、下载与安装

2020-03-25 10:57:42

STM32CubeMX介绍、 下载与安装

STM32CubeMX介绍、下载与安装

2020-03-24 10:57:12

关于STM32CubeMX重大升级

STM32CubeMX重大升级

2020-03-04 14:05:12

7天热门专题 换一换
相关标签