2018-01-28 09:32 AM
hi , i recently start programming with stm32f103rbt6 (using SPL) and i want to be a professional stm32 programmer , what is the best way to reach my purpose ?
thanks
2018-01-28 10:25 PM
Besides going to school/university for learning embedded programming, it will be by experimenting and debugging. In a non exhaustive list, my quick quess would be:
- Work on a project involving a serial interface and some analog
- Write your code so that 6 months later you can continue enhancing it
- Build your code so all possible error cases are treated
- Find a way for your code to be non-blocking
- Have fun with interrupts, make a smarter device by burying a state machine or a FIFO under interrupt.
Just bumped onto an interesting web article:
2018-01-28 10:50 PM
I have a right education if it comes to embedded programming (10 years of education + 3 years on the job training) and 5 years as an STM32 fan (home projects).
But I call myself a hobbyist. Why?
Because there is no replacement for professional experience - I mean working in the business environment among real professionals, solving real problems.
So study the subject and try to find a job, study more and find better job with better people you can learn from.
2018-01-28 11:03 PM
... what is the best way to reach my purpose ?
Technically, by either
As others said here, working in a team methodically on a given project, with certain constraints (time/budget) is a bit different from doing hobby projects.
But doing hobby projects is a good start already.
2018-01-28 11:29 PM
At one time, I sat at a table with some of the biggest CEOs in tech and real captains of the tech world. I had just graduated from school and was asking the same questions. I asked 'how can I become a really good developer', they kind of looked around at each other as if they were curious as well. I remember James Goslin was there and thought he was going to answer but another developer replied, 'I got this, 6000 hours'. He said there isn't any substitute for 'on task time'. They all seemed to be in agreement and Larry Ellison added, 'if I had a better solution, I'd be more wealthy than I am now'.
That was about 8 years ago. From that experience, I can confirm, nothing substitutes for time well spent.
My suggestion mirrors the others. Find a project for yourself. Don't have one in mind? A couple thousand opensource ones are waiting for people like you. Pound on the keyboard until your fingers ache. Use up your monthly limit of google searches researching code problems. In the end of all that. You'll be a professional.2018-01-29 02:44 AM
Continue using SPL. It is a hard way to become a professional, but you'll situate yourself at a much higher level than the ones using HAL or Arduino on top of HAL drivers. For newer microcontrollers, the replacement for the SPL is LL, but you have to put it to the test. I hear Iranian people have good technicians... I think it won't be a problem to get a good teacher/trainer/mentor.
2018-01-29 03:23 AM
> time well spent
Yes, it's really important. Interesting projects and experienced people you can learn from.
2018-01-29 03:50 AM
Continue using SPL.
And I migth add - study the Reference Manuals, to learn and understand how the peripherals work.
Then try a project using them.
Having read and understood one RM, reading others will come much more naturally.
Auto-generated code a la CubeMX (and other, similar tools) is not the professional way to go - unless for superficial coding monkeys ...
2018-01-29 04:14 AM
I use CubeMX generated code all the time (both HAL and LL) and spend many hours to figure out why something does not work.
If everything works fine you cannot learn anything. Since the HAL/LL do not work as expected you are forced to learn a lot before fixing the problem.
So it seems that CubeMX may help in understanding how things work under the hood:)
2018-01-29 04:16 AM
Going through a program and having the right experience is definitely effective in getting you hired.
Short of that, having an impressive project will get you noticed and enhance your chance getting hired.
As to cube vs. spl, with the right tools it doesn't matter. What's detrimental is to use those code directly in your project. Instead, mask them off with a middle layer of your own. And only call your layer.
So that in the future you can swap out the Hal or spl stuff transparently, or write your own. I started out with spl, and now most of the code I run is unchanged, except the underlying layer is most of my own code.