Summarizing the experience of the big guys, how to learn STM32? (Entry, Advanced)
[Copy link]
Experience from the masters
: If you want to get started quickly and advance,
you should first learn what you need for work, one by one. For example, first figure out GPIO, how to initialize, how to input and output, and then do the timers, serial ports, ADC, DAC, DMA, SPI, etc., one by one, and then
integrate them together after you understand them all. From simple to complex, if you can control the hardware, you can get started with this type of microcontroller. In terms of software, no matter what microcontroller or compiler you use, there is not much difference. It is best for beginners to buy a development board. It does not
need to be very advanced. Once you have developed a few common functions, the rest will be easy. --------hdxet
Regarding whether beginners need to understand the underlying functions:
Play around first and then talk about the underlying functions. Generally, use the ready-made library. Most applications will be fine. As for what is in the library, ignore it and read it when you reach the advanced stage. --------hdxet
2. Advanced steps :
Be able to light up the lamp - entry level;
be able to use various common interrupts and make projects - proficient;
be able to use DMA and PWM modes and be able to complete projects proficiently - proficient;
be able to use CAN, USB, RS232, RS485, SPI, I2C, motion control, motor drive, various filtering algorithms, PID algorithm - very proficient. --------coleyao
3. Experience sharing: I share
my own experience. I don't know if it's right or not. I learned MCU from the 51 single-chip microcomputer in college. Knowing all the functions is the entry threshold. Later, I gradually came into contact with other PIC, Freescale, STM, etc. through study and work. I gradually found that in fact,
all things are connected, but you must do it yourself. Whether you use routines or write them yourself, you must bring a board to run the code. There will definitely be problems in the process. You can slowly solve them to improve. Moreover, the underlying driver library of the current chip is available. When using it in the project, you just need to
refer to the manual to call it. The underlying driver function is normal. There are very few projects where you write code from scratch. --------Lu.ShiFourth ,
experience sharing
suggestions: beginners of STM32 do not need to remember, just use it directly. For this thing, practice can make progress; learning while using is the right way. The key is to use, not to learn. ------leicai05Five,
experience sharing
You can try to complete a function by yourself, such as a simple water light. The logic must be written by yourself. If you don’t know how to initialize and configure stm32, you can look up information, but you must have your own ideas.
I think you have entered the door after completing it. ------Llinuxu
6. Whether beginners need to understand the underlying functions
Beginners do not need to understand the underlying functions. Study what the project needs. For example, if your project only needs to light up an LED, then you only need to study how to configure GPIO, and there is no need to study PWM. Now
there is a magic tool called STM32CubeMX, which directly generates some underlying initialization code, plus HAL library calls, and you don’t need to check where you don’t know. If you call the underlying function more, you will naturally study how to configure it to achieve the effect you want.
In the project, there is no need to start with the underlying. Focusing on your algorithm is the truly meaningful thing. ------oner
7. Sharing of experience and views
I have also thought about how to clearly and systematically learn STM32, establish the entire Cortex-M knowledge system, and the corresponding theoretical support, and finally apply it to the Cortex-M core MCU. The existing tutorials do not build such a
knowledge system, learning, and growth path, so many people (including myself) will encounter bottlenecks at some stage. In the end, I found myself still at the point of knowing this, and I can use it and program for Baidu, but when I encounter a problem that needs
debugging and needs more theoretical support, I have no idea where to start.
In addition, if you do a project with STM32, you should also use an operating system, so RTOS still needs to be learned. There are many RTOS, and now there is the concept of IoT operating system
(such as RT-Thread [there are many IoT-related software packages], Huawei's LiteOS [official actions are relatively small], and Ali's Aliosthings [WiFi and other modules support relatively well]).
Therefore, it would be great if someone could integrate this set of content into a learning route and test and verify knowledge points. -------MurphyZhao
Eight, experience sharing (when can I get involved in the project) (many aspects of guidance)
If you can build a project and light it up
, you are considered to be getting started. If you know the basic characteristics of each peripheral, you are considered to be basically proficient (timer SPI UART IIC SDIO FMC, and look at the network and USB if necessary). If you know how to read and control peripherals (sampling, display, RF, etc.),
and can use existing libraries, you are considered to be proficient (RTOS/UI/storage/network). The rest are engineering experience, code organization, troubleshooting, debugging, etc., just do more.
If you can use the serial port, understand the waveform of SPI/IIC through an oscilloscope, output the desired waveform, and output PWM waves, you can start the project. In addition, you must have a solid foundation in C language and some bus knowledge. At least you must understand
the meaning of the stack, know what section the variables you define at will are in, and be familiar with the memory organization structure of the data. It is better (it is best to do more debugging and look at the Call Stack+local window and Watch window of MDK to see
the memory address and organization of the data. It will be very helpful for you to have a deep understanding of the language and CPU).
In-depth logic and code organization require you to summarize in practice. Looking at other people's source code is also a good way. If you want to be fast, it is not recommended to watch videos. Start with the PDF tutorial and compare it with the official manual.
It is no problem to go from 0 to being able to walk in one month.
About the learning method:
The progress and content of the video are not easy to filter. You can only watch it in a jumpy way, or pull it completely at 1.5 times the speed. It is easy to miss when you jump. It is convenient to check and compare carefully when you read the PDF repeatedly. First look at the design outline and understand it yourself,
then look at the places you don’t understand well in a targeted way, and cooperate with the datasheet for specific technical details. The whole process is dry goods. Then take the board and follow it again, and it will be basically OK. --------barryxiao
Nine, experience sharing
1. The chip is just a bottom-level tool. Of course, you can only design a reliable bottom-level system after you fully understand the working logic of the peripherals you use.
2. After you are familiar with the bottom level, the rest are the application problems, algorithms, protocols, application logic, etc. of the project. This is the industry attribute and industry accumulation.
3. If you want to get started, at least you should know the complete process of configuring a peripheral. You don't have to use each one once. As long as you know the general process and know where to look when you use it, you can get started. ------lingdianhao
Ten, learning mentality (about working on projects)
I agree with your opinion. I think it is very important to have a technical mentality, that is, to despise it. It's just something, I can handle it.
If you encounter a problem, it's a big deal. You feel that you can't do it. In this way, even if you solve the problem, you only solve such a problem. -------Lianghuangshan Bandit
The above is my excerpt of the experience sharing and guidance of the big guys. I hope it will be helpful to beginners of STM32 like me. At the same time, thank you for your sharing and guidance.
|