When preparing nonstandard USB firmwares for STM32 microcontrollers, it would be perfect to have a possibility to use a "CUSTOM CLASS", in "Class for FS IP" list in CubeMX. Unfortunately it is not available. I have taken a look into CubeMX, and have found that for example the CUSTOM HID class is implemented in the following way: In the USB_DEVICE_-STM32???_Configs.xml file there are the following sections: <!-- Custom HID Class --> <RefConfig Comment="CUSTOMHID" Name="USB_DEVICE_CUSTOM_HID_FS"> <CallLibMethod Name="USBD_Init" ReturnHAL="false" Phase="preOS"> <MethodArg Name="hUsbDevice" ParameterName="hUsbDeviceFS"/> <!--<MethodArg Name="USBD_DESC" ParameterName="HID_Desc"/>--> <MethodArg Name="USBD_DESC" ParameterName="FS_Desc"/> <MethodArg Name="id" ParameterName="DEVICE_FS"/> </CallLibMethod> <CallLibMethod Name="USBD_RegisterClass" ReturnHAL="false" Phase="preOS"> <MethodArg Name="hUsbDevice" ParameterName="hUsbDeviceFS"/> <MethodArg Name="USBD_CLASS" ParameterName="USBD_CUSTOM_HID"/> </CallLibMethod> <CallLibMethod Name="USBD_CUSTOM_HID_RegisterInterface" ReturnHAL="false" Phase="preOS"> <MethodArg Name="hUsbDevice" ParameterName="hUsbDeviceFS"/> <MethodArg Name="USBD_USER_CALLBACK" ParameterName="USBD_CustomHID_fops_FS"/> </CallLibMethod> <CallLibMethod Name="USBD_Start" ReturnHAL="false" Phase="postOS"> <MethodArg Name="hUsbDevice" ParameterName="hUsbDeviceFS"/> </CallLibMethod> <Component Name="Middlewares:USB_DEVICE:CUSTOM_HID"/> <ConfigFile Name="USBD_CONF_CUSTOM_HID_H"/> <ConfigFile Name="USBD_CONF_FS_C"/> <ConfigFile Name="USBD_DESC_H"/> <ConfigFile Name="USBD_DESC_C"/> <ConfigFile Name="USBD_DESC_FS_H"/> <ConfigFile Name="USBD_DESC_CUSTOM_HID_FS_C"/> <ConfigFile Name="USBD_INF_CUSTOM_HID_H_FS"/> <ConfigFile Name="USBD_INF_CUSTOM_HID_C_FS"/> </RefConfig> [...] <LibMethod Comment="" Name="USBD_CUSTOM_HID_RegisterInterface"> <Argument AddressOf="true" Context="global;NOT_INIT" GenericType="struct" Name="hUsbDevice" TypeName="USBD_HandleTypeDef"> <Argument AddressOf="false" GenericType="simple" Name="dev_config" OptimizationCondition="equal"/> </Argument> <Argument AddressOf="true" Comment="" Context="local;NOT_INIT" GenericType="simple" Name="USBD_USER_CALLBACK" TypeName="int"/> </LibMethod> [...] <SubComponent Csub="CUSTOM_HID" Description="Custom Human Interface Device"> <File Category="header" Name="Class/CustomHID/Inc/usbd_customhid.h"/> <File Category="source" Name="Class/CustomHID/Src/usbd_customhid.c"/> </SubComponent> [...] <RefConfigFile Description="Header file for #define" Name="USBD_CONF_CUSTOM_HID_H" Template="usbdconf_f1_h.ftl"> <File Category="header" Condition="all" Name="Target/usbd_conf.h" Version=""/> <!-- Parameters for Function and Buffer Configurations --> <Argument Comment="" GenericType="simple" Name="USBD_MAX_NUM_INTERFACES"/> <Argument Comment="" GenericType="simple" Name="USBD_MAX_NUM_CONFIGURATION"/> <Argument Comment="" GenericType="simple" Name="USBD_MAX_STR_DESC_SIZ"/> <!--<Argument Comment="" GenericType="simple" Name="USBD_SUPPORT_USER_STRING"/>--> <Argument Comment="" GenericType="simple" Name="USBD_DEBUG_LEVEL"/> <Argument Comment="" GenericType="simple" Name="USBD_SELF_POWERED"/> <Argument Comment="" GenericType="simple" Name="USBD_CUSTOMHID_OUTREPORT_BUF_SIZE"/> <Argument Comment="" GenericType="simple" Name="USBD_CUSTOM_HID_REPORT_DESC_SIZE"/> <Argument Comment="" GenericType="simple" Name="CUSTOM_HID_FS_BINTERVAL"/> </RefConfigFile> Then of course there are various files in the STM32CubeMX/db/templates directory: usbd_custom_hid_if_c.ftl usbd_custom_hid_if_l4_c.ftl usbd_custom_hid_if_h7_c.ftl usbd_custom_hid_if_f7_c.ftl usbd_custom_hid_if_f4_c.ftl usbd_custom_hid_if_l5_c.ftl usbd_custom_hid_if_g4_c.ftl usbd_custom_hid_if_h.ftl usbd_custom_hid_if_wb_c.ftl Has anybody tried to add the support for USB CUSTOM CLASS by adding sections/files similar to the above ones (with custom_hid replaced with custom_class), of course with apprpriately modified contents? Have I overlooked something else that should be modified? TIA & Regards, Wojtek

Adding the new "USB CUSTOM CLASS" template to CubeMX for STM32?
Started by ●October 5, 2020
