usbd_hid_composite 使用示例

例程路径: ls_sdk/examples/peripheral/usb/usb_hid_composite

本例程演示了如何使用usb_hid_composite运行usbd hid(keyboard/mouse/gamepad)实例。

注:出于对后续更新tinyusb仓库的考虑,为尽量保证tinyusb仓库的完整性,SDK的examples路径下只有app_config.h和SConstruct,demo的源代码在tinyusb的examples下

一、初始化及board配置

board相关的初始化代码如下:

void board_init(void)
{
    sys_init_none();
    pinmux_usb_init();
}

pinmux_usb_init会使用默认的DP/DM作为USB通信的两根IO

除此之外,为了适配tinyusb应用需求,需要实现board_millis()函数接口:

uint32_t board_millis(void)
{
    return systick_get_value();
}

以及board_button_read()函数接口:

uint32_t board_button_read(void)
{
    static uint32_t button = 0;
    if (button > 4)
    {
        button = 0;
    }
    else
    {
        button++;
    }
    
    return button;
}

该函数是用于模拟按键输入

二、测试准备:

2.1 硬件准备

使用Gemini demo板,确保DP(PA12)有1.5KΩ上拉电阻到VDD33

2.2 软件准备

建议安装bushound软件

三、操作步骤及结果:

编译生成usbd_hid_composite.hex文件,下载到demo板中,运行起来之后,在PC端打开一个空白文本文档,然后将鼠标移动到屏幕左上位置。之后将demo板USB线插入PC端,能看到有HID设备识别,文本文档不断输入字符”a”,鼠标会持续向屏幕右下方移动,同时电脑音量会一直减小直到静音

操作前可以打开bushound,抓取测试流程中所有USB通信数据