I'm sure that an experienced professional, such as Siwastaja, can do the job much faster and much better without Cube. Of course, he wasn't born that way. He spent some time at school. The, I guess he did many projects with various CPUs, made many mistakes, learned from them, and gradually became competent. And even now he continues to learn, and isgetting better and better. But this takes time.
Thanks but I'm younger and less experienced than you might think. I still clearly remember the time I was beginner with microcontrollers
so I can relate. Yes, jumping to ARM took time due to one silly bug in the stupid tutorial I was following, but if I had a non-broken linker script as an example, the time consumption would have been totally manageable, not too many hours actually.
And of course, microcontroller-based product design / firmware design&implementation is not taught (properly) at school anyway. My major was "computer engineering" so around FPGAs and some ASIC design etc. MCUs are from hobby basis originally.
The point is,
* Crappy tools like Cube waste your time and limit your abilities
long term - this is quite agreeable I think, no?
* But I would go further and say - they don't save enough time short term either, to be worth the long-term cost, no matter what coeffs you put for importance of short term vs. long term as long as it's something more sane than 100%-0%.
My statement is, the sole reason beginners have to resort to such tedious, crappy and
time-consuming broken workflows like Cube and ST HAL, is the utter lack of proper examples and tutorials guiding beginners, or if they exist, they are damn hard to find.
I often play with the idea of writing such tutorials but it requires a lot of time to do
properly - I don't want to be part of the problem -, and I have enough to do already.
Classic principles of abstraction work really well on this problem. For example, I have a simple one-liner I can use to configure an IO pin as an alternative function,
and set the AF number, instead of having to remember the register names and correct bit shift distances for the two registers involved. Coming up with such simple solutions does not take a lot of time, but saves it a lot long-term.