Как правильно изменить свойства / сгенерированный код пользовательского HID в STM32CubeIDE? - PullRequest
1 голос
/ 30 марта 2020

Я пытаюсь создать собственное устройство HID с STM32F103C8 , IDE, которую я выбираю, - STM32CubeIDE, а учебник , за которым я следовал, - на официальном канале ST youtube.

ST предлагает отличный инструмент «Инструмент конфигурации устройства», где я могу настроить микроконтроллер, и будет сгенерировано много кода на основе моей конфигурации. Этот сгенерированный код имеет «части кода пользователя», в которых пользователь создает свою логику c, и если ему нужно перенастроить микроконтроллер, «Инструмент настройки устройства» не удалит эти части кода.

Проблема: настроить пользовательский usb HID Мне нужно изменить код, сгенерированный «Инструментом конфигурации устройства» в местах, где нет места для пользовательского кода, и эти изменения будут удалены, если я снова запустите «Инструмент настройки устройства». Поля, которые я могу установить только в «Инструменте конфигурации устройства», таковы: enter image description here

Но этого недостаточно, мне также нужно изменить CUSTOM_HID_EPIN_SIZE, а CUSTOM_HID_EPOUT_SIZE определяет количество байт устройства и хост отправляют друг другу сразу, а также, если я изменю размер «пакета данных», мне нужно будет изменить сгенерированную по умолчанию функцию обратного вызова, которая получает эти данные и работает с ними, например, инструмент генерирует код, подобный этому:

{
  USBD_CUSTOM_HID_HandleTypeDef     *hhid = (USBD_CUSTOM_HID_HandleTypeDef *)pdev->pClassData;

  if (hhid->IsReportAvailable == 1U)
  {
    ((USBD_CUSTOM_HID_ItfTypeDef *)pdev->pUserData)->OutEvent(hhid->Report_buf[0],
                                                              hhid->Report_buf[1]);
    hhid->IsReportAvailable = 0U;
  }
  return USBD_OK;
}

но мне нужен указатель на «Report_buf», а не его копия s first 2 elements, and the default generated code pass only copy of 2 first bytes, and i can t изменить это в «Инструменте конфигурации устройства».

Мое текущее решение: На самом деле я решил эту проблему , но я не думаю, что решил это правильно, и это работает. Я изменил файлы шаблонов, которые находятся здесь "STM32CubeIDE_1.3.0 \ STM32CubeIDE \ plugins \ com.st.stm32cube.common.mx_5.6.0.202002181639 \ db \ templates", а также изменил файлы в "STM32CubeIDE_1.3.0 \ en.stm32cubef1. zip_expanded \ STM32Cube_FW_F1_V1.8.0 \ Middlewares \ ST \ STM32_USB_Device_Library \ Class \ HID "

Не думаю, что это правильный способ, кто-нибудь знает правильный способ сделать это?

Я также нашел такой же вопрос на форуме ST здесь , но он не был решен.

...