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
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一种使用STM32F103微控制器下载USB键盘程序的方法: 首先,确保你已经准备好所需的硬件和软件工具。你需要一块带有STM32F103C8T6微控制器的开发板,以及一个USB接口线用于将开发板连接到计算机。 接下来,在计算机上安装ST的Cube IDE软件。ST的Cube IDE是一个免费的集成开发环境,适用于STM32微控制器的开发和编程。 然后,打开Cube IDE并创建一个新的项目。选择合适的目标MCU(在这种情况下选择STM32F103C8T6)并选择适当的编程语言(如C或C++)。 接着,设置项目的配置。在这种情况下,你需要配置USB功能以使其支持键盘模式。你可以在Cube IDE的配置工具中完成这个步骤。 完成配置后,你可以编写键盘程序。根据你的需求,你可以使用Cube IDE来编写程序,或者使用其他编程软件(如Keil或GCC)编写。确保编写的程序与USB键盘的协议相匹配。 然后,将STM32F103C8T6开发板连接到计算机上。使用USB接口线将开发板连接到计算机USB端口。 在Cube IDE中,选择“Build”菜单并构建项目。检查输出是否没有错误或警告。 最后,将编译好的程序下载到STM32F103C8T6开发板上。在Cube IDE中选择“Debug”或“Run”按钮开始下载。下载完成后,你的STM32F103C8T6开发板将能够作为USB键盘计算机进行通信。 这是一个基本的概述,描述了如何使用STM32F103微控制器下载USB键盘程序。具体步骤可能会因个人的需求和使用的软件工具而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值