Я пытаюсь сделать колесо с силовой обратной связью, но программное обеспечение мне не по душе. Это должно переключать кнопку 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);
}
Дескриптор моего отчета (я использую его впервые):
Запустив этот код, кнопки статичны, например:
Они ДЕЙСТВИТЕЛЬНО меняются (случайным образом) только тогда, когда изменяется переменная relativeMvt, что очень странно.
Что я пробовал:
Поменять местами relativeMvt и кнопки в typeDef
Проверьте размер дескриптора отчета и т. д.
Плакать
#define USBD_CUSTOMHID_OUTREPORT_BUF_SIZE 2
#define USBD_CUSTOM_HID_REPORT_DESC_SIZE 45
#define CUSTOM_HID_EPIN_SIZE 2
Что мне нужно изменить, чтобы заставить его работать? Спасибо!