STM32CubeIDE and STM32CubeMx are a menace to productivity and sanity
Allow me to vent for a moment while also exposing some real issues.
I've found it way too easy for CubeMX and/or CubeIDE to forget or mess up settings and delete my source modification without notice.
I am trying to figure out Azure RTOS USBX from all the oddly aimed and targeted examples to get a CDC ACM serial port interface to work on an F746 nucleo board with FS USB. Most of the examples are HS on a H723 or discovery boards with a HS USB transceiver. I'm also finding the USBX documentation for the class devices to be lackluster. I'm going to just have examine the source code to see how to access it from my application.
The one example I tried from the STM32 Wiki was not CubeMX safe as significant parts were not positioned in user code areas. So the first CubeMX code update deleted code. That is annoying and I sort of saw it coming. So I had to copy/reposition code so it wasn't being deleted. I got it compile but it was not recognized by Windows.
I pivoted to try the one USBX HID example targeting a F767 nucleo board. I had that board so was able to get the HID example to compile and be recognized by Windows. I don't think the windows driver worked. But at least the hardware was talking. I used an example from a MOOC USBX Lab youtube video/presentation to create a composite device. I just took pieces of the code and added it to the example. Yet again, this was aimed at high speed USB on a H723 board but there are many similarities so useful.
So got that to at least recognize a HID device and Serial device. Neither driver was working on windows.
Where things got really annoying was I actually made what was a mistake to load the actual example from the video project into the workspace. I wanted to see if perhaps there were CubeMX settings in the IOC I needed to transfer to my project.
CubeIDE updates things in a heart beat and importing this project caused H7 updates to be download. Keep in mind these were targeted at an H7 series and in a totally different project.
Unfortunately, CubeMX has no hesitation destroying user input when packages have to be installed. So I had to turn all the Azure ThreadX and USBX stuff back on. Thus rendering pointless my attempt to see original settings.
Wait, there is more fun to come.
I go back to my original project which was separate and using an F7 as well to find its settings were all screwed up. The ThreadX and USBX parts were not letting me access the settings. I ended up having to uninstall the F7 Azure package and reinstall. Then re-enable. Then update all my settings again.
It almost got me royally but I'm getting wise to its toxic relationship. I had saved a copy of all the USBX related user files I had so painfully figured out and updated. Because anyone that has used these tools can see this coming, the code update deleted all my work and replaced them with default files.
Thank god I had the back up or I would have been even more frustrated. This is a figuring out exercise as I learn what I need to do before transition to my production project. What I find is part of my timing is figuring out how to get CubeIDE/CubeMX working again.
I realize there is not much actionable by any front line STM people who may be monitoring these forums. I do have the strong request that my user experiences be shared with the manager(s) responsible for CubeIDE and CubeMX.
Some basic development objectives would be nice. Like DO NOT DESTROY user created inputs. Have the backup feature turned on by default. Don't just reset CubeMX settings at seeming random.
An associated dream is that an effort is made to keep examples relevant and compatible with the current versions of the tools. Be more comprehensive in examples across more processor families. The full speed USB example support is quite lacking.
All this being said, CubeMX and it's code generation is a power learning and development tool. When I don't want to strangle it.
