我正在尝试使用STM32F103C8创建自定义 HID 设备,我选择的 IDE 是 STM32CubeIDE,我关注的 教程位于 ST youtube 官方频道。
ST提供了很棒的工具“设备配置工具”,我可以在其中配置微控制器,并且会生成很多基于我的配置的代码。该生成的代码具有“用户代码部分”,用户可以在其中创建他的逻辑,如果他需要重新配置微控制器,“设备配置工具”将不会删除该部分代码。
问题:要配置自定义 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
在“设备配置工具”中更改它。
我目前的解决方案:实际上我解决了这个问题,但我认为我没有以正确的方式解决它并且它有效。我已经更改了此处的模板文件“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 论坛上也发现了同样的问题,但没有解决。