I'm interested in understanding what is considered standard practice in production environments and the reasoning behind those choices.
And why would that matter?
If it does, then your question is even more heated and polarized than it otherwise is already. Half of the "big boys" (or those pretending) say that the idea of using some random tool to generate code which you then modify is against all sane software development practices; a last resort hobbyist hack - and they are kinda right; this whole CubeMX thing doesn't really belong in
elegant,
professional software development flow, where code is written, unit tested, integration tested and versioned. Polar opposite of point/click/modify.
And then again, many companies resort to such unelegant, unprofessional way of development
anyway, and if it works for them, great - and if it works for
you, then great! - hence my comment: why would that matter?
What makes me laugh though is some people on forums who
obviously have absolutely no idea how software is professionally developed touting CubeMX code generation on a random Windows machine and then being randomly modified and put into a dropbox or something as a pinnacle of professional large-scale software development. The whole flow is a textbook example of a hobbyist flow - and don't get me wrong, there's nothing wrong in that, and it probably is faster way to good results, especially in smaller startups. But it isn't The True Software Development Way; if you are looking for that for
any reason, look for: working in teams, writing specifications, writing tests, writing documentation, version control, code reviews - stuff like that. The CubeMX/ST HAL way bypasses all of this: you can't automate the tooling, it doesn't have any documentation (formal or not), it is almost impossible to work in teams, testing is difficult because nothing is modular, autogenerating and modifying autogenerated code or adding between INSERT THERE tags is poison for traceability / version control. and so on. So guys, keep using and recommending CubeMX but don't pretend CubeMX must be used because "Real Software Developers in Real Companies do it like that". They don't. Ask paulca.