0

我正在尝试制作一个力反馈轮,但软件不是我的菜。这应该切换按钮 0 而不是。

typedef struct{
    uint8_t buttons;
    int8_t relativeMvt;
}steer_t;
steer_t steer = {0, 0};

while (1)
{
    HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);

    if(steer.buttons) steer.buttons = 0b00000000;
    else steer.buttons = 0b00000001;

    USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, steer, sizeof(steer));
    HAL_Delay(500);
}

我的报告描述符(这是我第一次使用):

在此处输入图像描述

运行该代码,按钮是静态的“ON”,如下所示:

在此处输入图像描述

只有当“relativeMvt”变量改变时,它们才会(随机)改变,这很奇怪。

我试过的:

  • 在 typeDef 中交换 relativeMvt 和按钮

  • 检查报告描述符大小等

  • #define USBD_CUSTOMHID_OUTREPORT_BUF_SIZE 2

    #define USBD_CUSTOM_HID_REPORT_DESC_SIZE 45

    #define CUSTOM_HID_EPIN_SIZE 2

我必须改变什么才能让它工作?谢谢!

4

1 回答 1

0

我已经解决了。我失踪了:

#include "usbd_customhid.h"

我在传递变量时忘记了“&”:

 USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, &steer, sizeof(steer));
于 2020-12-31T06:13:30.270 回答