How to learn SCM as an opportunity to gradually become an excellent engineer

Source: Internet
Author: User
Status quo

I don't know if the readers who read this article are as confused as I was when I was a beginner in MCU. I am puzzled when I see various new terms. I don't know where to start. I do not know how to start using the examples in the book. However, if I try to do something, I won't solve any problems, I may not have answered a few questions. I feel like I have finished learning various MCU modules, but I still have no idea how to design my own things, and I don't know how to go further; I even encountered too many difficulties at the beginning and gave up learning.

I have seen many people learning SCM. Many of them are learning to read some video or book tutorials and then write them according to other people's code. Once they are ready to use, they will feel like they have learned. In the course of learning, there are actually many things that you don't understand, but you don't know what to do.

Although some people have learned SCM according to those tutorials, their understanding of SCM is still very simple. I don't know how to design a single-chip microcomputer system, nor how to further study. I am confused about what is the key.

I have also met many single-chip microcomputer learners who have posted some posts asking questions, posted their own programs, and asked what to do if they cannot work. The problem is not clearly described, the program code is messy, and there is no circuit diagram. In many cases, few people have answered the problem. Some people may give up learning. Many people even gave up learning after downloading the program to a single-chip microcomputer.


Why is this happening? Is it because these people do not want to learn, or do they have poor learning abilities? I think everyone's perseverance is limited and it is impossible to stick to it all the time. The lack of learning ability is a problem for many people, especially the lack of proper education from an early age. So this is not the main reason.

I think one of the major reasons is that there is no good information to guide beginners in learning SCM. There are a lot of SCM learning materials on the market, but there are not many really good materials. There are two common SCM learning materials. Let me list them.

One is theoretical, a little like the feeling of many textbooks in college. The Register, instruction set, and the internal structure of the single-chip microcomputer are introduced at the beginning. For beginners of single-chip microcomputer, an article reads almost all obscure professional words, not to mention understanding, these books are obviously not suitable for beginners to learn.

The other is practice-oriented. I have read a lot about this type of learning materials, but many of them have a feature, that is, over-focusing on practice rather than thinking, methods, and principles. Typically, there are many materials such as "ten days to learn XXX" on the market. With this kind of information, you can quickly learn the single-chip microcomputer, and fully cater to the mentality of many people, can quickly learn what you want. However, if you only rely on such information, you can only learn SCM, but it is difficult to learn SCM well. Then there are many problems mentioned above.

Key points

The focus of SCM learning is by no means a simple system that uses C language to write a few drivers to 51 without any code style. It is a system that barely works but has many bugs and cannot be maintained at all. The basic operations of various single-chip microcomputer, such as 51, 430, and AVR, are never as simple as they are. More importantly, from the process of learning any single chip microcomputer, we can understand the engineering ideas, extract learning methods and skills, and master the general methods of single chip microcomputer system design.

People with rich experience in programming know that programming languages are just the most basic thing. They are just the carriers that express programming ideas, rather than the core knowledge of programming. It is more about programming algorithms and engineering ideas.

A person who has mastered programming ideas can quickly switch from one programming language to another. Furthermore, a person who has mastered excellent design ideas and learning skills, it can better switch between different technologies.

Why do people want to learn languages? Language itself is not the most important thing. What matters is that language is the carrier of thoughts. In the process of language learning, we gradually learned to think and gradually developed our own ideas. Without thinking, the language itself loses its meaning. A simple computer program can also process text and do better than a person, but it cannot think like a person; with the idea, it is okay to express it in any well-developed language.

Language itself has great limitations and cannot express all ideas, while single-chip microcomputer also has its own limitations. In addition, natural language and human thinking, it is far more complicated than the combination of single-chip microcomputer and single-chip microcomputer design ideas. Also, language itself can also affect people's way of thinking. For example, Americans speak more straightforward than Chinese, similar, different single-chip microcomputer learning, it will also affect the thinking of single-chip Microcomputer System Design (especially the difference between process-oriented and object-oriented programming languages can better reflect this point ).


Through the analogy, we found that the core of MCU learning is not the single chip microcomputer programming itself, but should be upgraded to a higher level, the single chip microcomputer system design philosophy. Once you have mastered the design philosophy of the single-chip microcomputer system, it is a step closer to an excellent underlying hardware engineer. Learning this idea is achieved through deep learning of a single-chip microcomputer and using a variety of other single-chip microcomputer methods.

I think this is not the most important issue. Once you have mastered the excellent design ideas, it is much easier to switch from one single-chip computer to another single-chip computer and to the embedded platform.

But does it mean that such a debate is meaningless? Obviously not. It is similar to natural language. If a person who lives in China learns English from an early age, he can cultivate his thinking, but it causes a lot of inconvenience, because all people around are speaking Chinese. This person can spend several years learning Chinese again, but it is quite time consuming (natural language is too complex and it may take several years to learn a new language; however, human thoughts are more complex, and they have been accumulating for a lifetime ).

Therefore, the problem of single-chip microcomputer for beginners to learn is also of some value. Many people do not support entry 51, which is believed to be obsolete and rarely used at work. But fortunately, the single chip microcomputer is far less difficult than the natural language. People proficient in 51 single chip microcomputer will soon be able to learn 430 single chip microcomputer.

Learning Philosophy 1. Focus on practice

Many Chinese students have started to learn English since junior high school or even elementary school. Until they graduated from college, their English proficiency is far inferior to that of American primary school students. I am also one of them. The reason is simple and lacks practice. The same is true for single-chip Microcomputer. I am afraid it will always be hard to learn without practice.

2. Extract ideas

Whenever we mention learning, we often say "combining theory with practice ". However, in reality, there are not many people who really do this, including the problems I have encountered in MCU learning. The theory is abstracted from practice and plays a guiding role in practice. Theory and practice should be equally important. In the process of learning single-chip microcomputer, we should constantly think about and extract various theoretical ideas of the single-chip microcomputer system, as well as learning methods and techniques, to lay a solid foundation for further study in the future.

3. Do not rush for immediate benefits

This is not to be said. Some people are excited when they see learning materials such as "five days to learn ***" and "one week to master ***". In fact, in most cases, they use such materials for learning, the title is not as effective as it is. Even if you have finished learning, you only understand the basic knowledge and cannot use it well. This kind of thing is easy to make people more eager for immediate success and profit. If the learning of a knowledge is so simple, society will not be what it is today.

4. Persistence

Hardware-related learning is relatively difficult, and requires a lot of knowledge and experience. The same is true for learning single-chip microcomputer, which requires long-term persistence.

What I want to do

For the above reasons, I decided to write a series of articles on MCU learning based on my own ideas to help beginners learn. There are also many difficulties in writing this series of tutorials.

First, my own skills are limited. In particular, the common problems that people who do technology may have are insufficient language skills.

Second, there are many articles in this series about time. It takes me a long time to design the entire knowledge structure, then I have to modify and adjust it. I plan to spend a year writing the entire series, which requires a lot of effort.

Third, as far as more than a dozen articles have been published, they have not met my expectations. I hope more people can read the articles, especially those who wish to provide feedback to me, for example, where there are problems with writing, poor understanding, and so on, so that I can be more motivated to continue writing, but also better adjust and improve the areas where writing is not good.

Tutorial content

This series of tutorials begin with the most basic entry-level knowledge and gradually introduce the single-chip microcomputer system design, including:

1. Entry: basic concepts such as single-chip microcomputer and basic knowledge of various electronic designs

2. Ideology: Engineering ideology of single-chip Microcomputer/computer system design

3. Learning: the learning process, methods and skills of single-chip microcomputer are introduced with 51 single-chip microcomputer as an example.

4. Application: design the single-chip microcomputer system instance according to the standard engineering method (the system planned to be designed includes the calculator, e-table, password lock, and simple mobile phone. Check whether there is time for confirmation)

5. Principles: starting from analog circuits and digital circuits, I will introduce the principle of single-chip Microcomputer/computer systems in depth, and design a simple CPU by myself (due to the limited personal level, this part is not sure to write well, specific content depends on the situation)

Tutorial features 1. Comprehensive technical knowledge, from entry to mastery

Including a variety of basic knowledge, especially the introduction of the basic concepts of single-chip microcomputer, why to use single-chip microcomputer, etc., has been ignored in many similar books and tutorials. At the same time, it also contains some in-depth knowledge, including the principles section to introduce the basic principles of the single chip microcomputer, to help you understand the single chip microcomputer in depth.

This series of tutorials take 51 single-chip microcomputer as an example, the reason for choosing 51 is:

First of all, I have a better understanding of 51 and 430, while 430 are mostly SMD packages, which are not suitable for self-built circuits. In addition, many drivers have been provided by the official team, which is not conducive to learning by myself;

51 is the most common entry-level classic single-chip microcomputer, with the most information available. You can also directly use the Proteus software for simulation. If you have no conditions to buy a development board, you can also learn;

51 is simpler than many other single-chip computers, such as the 430 clock module, which is quite complicated and hard to understand for beginners;

After introducing the basic knowledge of single-chip microcomputer through 51, I will briefly introduce 430, especially comparing the advantages and disadvantages between the two, so that everyone can quickly feel the huge advantage of 430, learning 51 lays a solid foundation for quick understanding of 430.

2. In addition to single-chip microcomputer knowledge, there are also ideas, methods, and techniques

In this series of tutorials, the main topic that describes programming knowledge of various MCU modules is learning, and learning is only part of the entire tutorial. In this article, I will go through various methods and techniques, how to understand some module functions, how to view the sequence diagram, strictly abide by engineering ideas for programming, and how to debug a program with errors. In this article, we will introduce many important ideas and make preparations for subsequent studies.

3. Knowledge sequence design

The SCM learning process involves a lot of knowledge, and a lot of knowledge is highly correlated with each other.

This series of tutorials clearly plan the order of knowledge to best suit the human cognitive process. However, in actual planning, it is found that no matter how you adjust the knowledge order, there are always some pieces of knowledge that are mutually dependent and the relationship is complex. For example, when I start talking about the IO port, I will definitely mention Registers. The understanding of registers requires profound background knowledge. However, this background knowledge is hard to understand without practice.

Beginners often feel confused and confused in such a place. Every time I encounter such a knowledge, I will tell beginners how to treat it. Should this knowledge be learned and supplemented by yourself, or should we wait until the principles have been learned and understood again? What should we think of this term now.

In addition, you need to have basic knowledge such as C language before learning the entire tutorial. For details, refer to the instructions in the first article "preface" of the tutorial.

4. Easy to understand

This series of tutorials strive to be easy-to-understand, rather than using a bunch of words that the novice doesn't understand to explain another word. However, due to the limitation of personal language expression ability, it may be complicated or unclear in some places. I hope you can help us to point it out.

Other problems

If you think that what I wrote is helpful to you, you are welcome to give more feedback, including incorrect writing, unreasonable writing, and not clear, so that I can improve it.

This series of tutorials is first launched on my personal homepage. Welcome to visit (because it is a foreign server, the speed is a little slow, and some network conditions may not be accessible ):

It will also be forwarded to sites such as CSDN and e-enthusiasts.

CSDN column URL


E-enthusiast forum


Reprinted please indicate Source:

How to learn SCM as an opportunity to gradually become an excellent engineer

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.