You may have been studying for a long time, but when your leader throws an STM32 project at you, are you still at a loss? A friend of mine started learning the 51 microcontroller and later switched to STM32. He mainly learned by following online courses, typing code along the way. He went through various video courses from training institutions and was able to complete the examples on the development board. Later, he also learned PCB design, but since he didn’t learn much at school and wasn’t in an electronics major, he fell into confusion and didn’t know how to continue learning. I remember when I was in college, our professor repeatedly reminded us that “A master leads you to the door, but the practice is up to you.” This advice didn’t end there; he often advised us to delve deeper into the 51 microcontroller. At that time, I didn’t fully understand his meaning until several years later in my career. In the embedded field, technical progress requires a solid understanding of the underlying concepts. Through studying the 51 microcontroller, one can grasp hardware knowledge related to microcontrollers, SOCs, and microcomputer principles. When I worked at a military enterprise, my position was embedded development engineer. Back then, I was still a novice, and I hadn’t even mastered C language. An experienced engineer from Huawei guided me in learning and working. He primarily worked on C language development at Huawei and had some understanding of the 51 microcontroller.

The first small project we worked on together was implemented using STM32. He looked through the relevant STM32 demos, and a few days later, the project started to take shape. Although this project was small, it involved C# for the upper computer development, C language for the microcontroller development, graphic interface design using PS, and the CAN communication protocol. After completing the project, during a chat with him, I learned that he was previously unfamiliar with CAN communication and STM32. What? Perhaps this is the result of related learning. In fact, C language is very close to low-level development and is the primary programming language for embedded development. Mastering C language without understanding the underlying microcomputer principles is impossible. Concepts like registers, bit manipulation, stack, memory allocation, and release will all be encountered. Returning to the title of this article, the reason for not being able to do projects is that one has only learned the surface and not the substantial knowledge. Even though you have studied for a long time, have you read the official manuals? Perhaps you have only been using standard libraries and HAL libraries. This is not to belittle library development; in fact, library development is a highly efficient way of coding. Experts also use libraries to develop STM32 projects, but they may strive to thoroughly understand the standard libraries and HAL libraries they use. Developing libraries is like creating wheels; it is the product of many engineers’ wisdom. The following image shows the encapsulated peripheral drivers, which are worth learning how to implement.

Working on low-level development is indeed more complex, and the growth cycle for low-level software engineers is longer. Some may argue that now all manufacturers’ configuration tools are very complete, so why should I not focus on applications and algorithms and instead write my own drivers? Then you should be content as an application software engineer and not interfere with low-level development. When doing microcontroller development, one must be clear about the future direction. Will you work as a software engineer for a few years and then switch to management? If you pursue higher technical goals, your direction must be to become a system architect. To become a qualified system architect, you need to understand how microcontroller low-level works, and you should also possess a considerable degree of hardware knowledge; algorithms at the application level can only be the icing on the cake. These low-level aspects are called “low-level” because they are indeed the most fundamental parts of the entire system framework. Just like building a tall building, these are the foundations. Carefully study the official manuals and register manuals, write each driver by hand, and do it step by step. At the same time, learn about electronic components, circuit principles, and other hardware knowledge. In fact, being able to persist means you have already defeated 90% of people, and finding a job will naturally not be a problem.
This article is reprinted from “Microcontrollers and Embedded Systems.”
(End)
More Exciting Content:
Call for Papers
Yan Shi│Reflections and Suggestions on the “Dilemma” of Young University Teachers
【Directory】”Computer Education” 2022 Issue 11
【Directory】”Computer Education” 2022 Issue 10
【Directory】”Computer Education” 2022 Issue 9
【Directory】”Computer Education” 2022 Issue 8
【Directory】”Computer Education” 2022 Issue 7
【Editorial Message】Professor Li Xiaoming from Peking University: Reflections on the “Year of Classroom Teaching Improvement”…
Professor Chen Dao Xu from Nanjing University: Teaching students to ask questions and teaching students to answer questions, which is more important?
【Yan Shi Series】: Trends in Computer Science Development and Their Impact on Computer Education
Professor Li Xiaoming from Peking University: From Fun Mathematics to Fun Algorithms to Fun Programming—A Path for Non-specialists to Experience Computational Thinking?
Reflections on Several Issues in Building a First-class Computer Discipline
New Engineering and Big Data Major Construction
Learning from Others—Compilation of Research Articles on Computer Education at Home and Abroad

