Я пытаюсь создать собственное устройство HID с STM32F103C8 , IDE, которую я выбираю, - STM32CubeIDE, а учебник , за которым я следовал, - на официальном канале ST youtube.
ST предлагает отличный инструмент «Инструмент конфигурации устройства», где я могу настроить микроконтроллер, и будет сгенерировано много кода на основе моей конфигурации. Этот сгенерированный код имеет «части кода пользователя», в которых пользователь создает свою логику c, и если ему нужно перенастроить микроконтроллер, «Инструмент настройки устройства» не удалит эти части кода.
Проблема: настроить пользовательский usb HID Мне нужно изменить код, сгенерированный «Инструментом конфигурации устройства» в местах, где нет места для пользовательского кода, и эти изменения будут удалены, если я снова запустите «Инструмент настройки устройства». Поля, которые я могу установить только в «Инструменте конфигурации устройства», таковы:
Но этого недостаточно, мне также нужно изменить 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 здесь , но он не был решен.