如何增加 HID 轴的范围? (方向盘在几度后达到极限)

How could I increase the range of an HID axis? (steering wheel hits limit after a few degrees)

我有一个编码器,每转 4300 个增量。而且我至少需要在任一方向转 3 圈。 (用于方向盘) 然而,当我稍微转动它时,它已经触及极值。这是顺时针旋转几度后:

这是我的描述:

我的代码:

  while (1)
  {
      steer.direction = position - position_p;
      position_p = position;

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

我试过使用绝对值。对于 8 位,它会在几度后溢出并返回到相反的极值。也许 16 位可以解决这个问题,但我无法让它以这种方式工作。

我设法使用了 16 位绝对位置。 我认为它不起作用,因为“发送”功能只采用 8 位值。 所以我将 16 位变量拆分为 2x8 位数组。 (我正在使用 cubeIDE)

  steer.direction[0] = position & 0x00FF;
  steer.direction[1] = position >> 8;