Introduction
Embedded technology has permeated every aspect of life—from smartwatches to industrial control, from smart homes to new energy vehicles. Mastering this technology not only unlocks more career possibilities but also allows you to create products with real value.
However, many beginners often find themselves confused: where should they start? What basics are needed? What level of knowledge is required to find a job? This article organizes a practical learning path that has been validated through real-world experience, covering 99% of learning pain points, helping you avoid detours and grow efficiently.

1. Preface: Understand These “Fundamental Logics” First
1.1 What is Embedded Systems?
In simple terms, embedded systems are “dedicated computer systems” (as opposed to general-purpose computers like PCs). From electric toothbrushes and smart bands to automotive electronics and aerospace equipment, the core control components belong to embedded systems. Technologies like STM32 and Linux driver development are branches of embedded technology.
1.2 Which Majors are Suitable for Learning Embedded Systems?
Embedded systems span both hardware and software, with natural advantages in majors such as computer science, electronics, automation, IoT, and communications (courses covering C language, circuits, operating systems, etc.). However, non-majors can also excel—it’s essentially a “technical tool,” and companies care more about what you can do rather than your academic background.
1.3 What is the Salary Outlook for Embedded Jobs?
- Entry-level positions are highly competitive (3-8k), but mid to high-level positions are scarce (10k+ is common, and 300k+ annual salaries are not uncommon).
- Salary is closely related to the industry: fields like new energy vehicles, semiconductors, and medical electronics offer leading compensation, so it’s advisable to prioritize high-growth industries.
1.4 Core Learning Methods
Embedded systems are “engineering practice-oriented” technologies, with three core principles:
- Write code actively, rather than just watching;
- Start simple and gradually delve deeper (first implement functionality, then optimize performance);
- When encountering problems, search first, then ask, and make good use of tools (Baidu, AI, technical communities).
1.5 Which Positions are Worth Noting?
Searching for “embedded engineer” + “5 years experience” + “30k+” on job sites will reveal that high-value positions are concentrated in:
- Automotive electronics (smart driving, vehicle networking);
- Industrial control (PLC, automation equipment);
- IoT (edge computing, smart homes);
- Chip development (MCU firmware, driver development).
1.6 Learning Sequence
Start with the basics (C language + STM32 fundamentals), then advance (kernel + RTOS + toolchain), and finally consolidate through practical projects—this article will unfold according to this logic.
2. Beginner Stage: Quick Start, Build Confidence
The core of the beginner stage is “seeing results” to avoid being discouraged by theory. Focus on learning two things: C language + STM32 basics.
2.1 C Language: The “Mother Tongue” of Embedded Systems
- Development Environment: It is recommended to use VS (Community Edition is free) on Windows, which is beginner-friendly and does not require complex configurations.
- Learning Resources:
- Books: “The C Programming Language” (written by the creator of C, a classic among classics);
- Videos: Haobin’s C Language on Bilibili (suitable for beginners, easy to understand).
- Key Goals: Master basic syntax such as variables, functions, pointers, arrays, and structures, and be able to write simple programs independently (e.g., bubble sort, string processing).
2.2 STM32: Starting with “Lighting Up an LED”
STM32 is representative of 32-bit MCUs, with abundant resources and an active community, making it suitable for beginners.
- Development Environment: Keil (version 5.26+ can be used for free in China).
- Development Board Selection:
- Beginners do not need high-end boards; the STM32F407 series offers high cost-performance (strong performance, comprehensive resources, supports standard library development);
- Basic kit: core board + ST-Link downloader + USB to TTL (total cost about 50 yuan, sufficient for beginners).
- Essential Peripherals: Ordered by difficultyGPIO (lighting up LED, button control) → UART (serial communication) → Interrupts → TIMER (timers) → AD/DA (analog-to-digital conversion) → SPI/I2C (sensor communication) → PWM (motor control) → DMA (data transfer acceleration).
- Learning Resources: Bilibili’s “Jiangxi University of Science and Technology Automation Association” STM32 tutorial (free quality content, from peripherals to practical projects, suitable for beginners).
2.3 Practical Projects: Solidifying the Basics
After learning about peripherals, do 1-2 small projects:
- Example: Temperature and humidity monitoring (STM32 + DHT11 sensor + OLED display);
- Focus: Connect the knowledge of peripherals learned and understand “how to implement from requirements to code”.
3. Advanced Stage: Delve into the Fundamentals, Differentiate Yourself
After the beginner stage, to earn a high salary, you must break through the “application layer” and delve into the “hard bones” of the kernel, RTOS, toolchain, etc.
3.1 C Language Advancement: Not Just “Using”, but “Understanding Principles”
- Must-Read Books:
- “C and Pointers” (master pointers and memory management, the “internal skill” of embedded development);
- “Expert C Programming” and “C Traps and Pitfalls” (guides to avoid pitfalls, understand compiler characteristics).
- Key Knowledge Points:Memory layout (stack, heap, global variable area), advanced pointer usage (function pointers, pointer arrays), structure encapsulation (simulating object-oriented programming), preprocessor directives (macro definition techniques).
3.2 Deep Dive into STM32: From “Using Peripherals” to “Understanding the Kernel”
- Core Content:
- Bus architecture (how AHB/APB buses connect CPU and peripherals);
- Interrupt system (NVIC, interrupt priority, nesting mechanism);
- Clock tree (how the RCC module “powers” peripherals);
- Startup process (from reset to the execution of the main function).
- Learning Resources: “STM32F4xx Reference Manual” (official documentation, read the “kernel” and “bus” chapters carefully) + “Cortex-M3: The Definitive Guide” (understand ARM kernel principles).
3.3 FreeRTOS: The “Gateway Skill” for Embedded Operating Systems
RTOS (Real-Time Operating System) is a “standard skill” for mid to high-level positions, and it is recommended to start with FreeRTOS (abundant resources, high market share).
- Learning Steps:
- Basic usage: task creation, semaphores, queues, mutexes;
- Kernel principles: task scheduling algorithms (time-slicing, priority preemption), memory management (heap allocation strategies), interaction mechanisms between interrupts and tasks;
- Practical: Refactor beginner projects using FreeRTOS (e.g., multitasking: sensor collection + display + data upload).
3.4 Toolchain: Not Just “Writing Code”, but Also “Understanding Compilation”
- Must-Learn Skills:
- Compiler principles: how .c files become .bin files (preprocessing → compilation → assembly → linking);
- Linker scripts: controlling the layout of code and data in memory;
- IAP/OTA: implementing remote program upgrades (essential for enterprise-level projects).
3.5 Middleware and Debugging: Enhancing Development Efficiency
- Common Middleware:LVGL (GUI development), FatFS (file system, managing SD cards), LwIP (network protocol stack), LetterShell (command line debugging tool).
- Debugging Techniques:Step-by-step debugging (Keil/Ozone), log output (EasyLogger), logic analyzers (viewing GPIO timing), SystemView (visualizing RTOS task scheduling).
3.6 Advanced Projects: Reflecting Technical Depth
Avoid “function piling” and focus on “performance metrics”:
- Example: Smart clock (needs to implement: FreeRTOS multitasking scheduling + LVGL interface + low power optimization + OTA upgrade);
- Resume highlights: “task scheduling response time < 1ms” and “OTA upgrade success rate 100%” as quantifiable metrics.
4. Learning Methods: 11 Insights to Avoid Detours
- Prioritize Hands-On Practice: For every knowledge point learned, immediately write code to verify (e.g., when learning pointers, write code to test wild pointers and null pointers).
- Start from Shallow to Deep: First learn to use (e.g., call FreeRTOS APIs), then understand principles (e.g., implementation of task scheduling), and finally optimize (e.g., reduce context switching overhead).
- Make Good Use of Tools: When encountering problems, first search Baidu/CSDN, then ask AI (recommended DeepSeek, strong code analysis capability), and finally consult others.
- Accept “Clumsiness”: Talent determines speed, but time accumulation determines height. Writing 30 lines of code every day will far exceed those who “fish for three days” after half a year.
- Relieve Anxiety: Anxiety stems from “thinking too much and doing too little”. Instead of worrying about “what if I can’t learn”, focus on achieving “today’s small goals” (e.g., understanding a peripheral manual).
- Cyclic Learning: Follow the cycle of “practice → summarize → theory → practice again”: first implement functionality with code, then summarize patterns, and finally explain with theory to form a closed loop.
- Fill in the Gaps: No need to learn digital and analog electronics first! Learn them as needed (e.g., learn how to use a multimeter when doing hardware debugging) for higher efficiency.
- Mastery Over Quantity: Mastering STM32 + FreeRTOS is more advantageous than “having a little knowledge of 51, STM32, and Linux” for securing a high salary (companies want “problem solvers”, not “encyclopedias”).
- Communicate More: Join technical groups, browse forums (e.g., STM32 Chinese forum), and observe others’ problems and solutions to broaden your thinking.
- Don’t Fear Detours: No one can completely avoid pitfalls; the pitfalls you encounter (e.g., incorrect interrupt priority configuration) are experiences that are more valuable than a “perfect path”.
- Summarize Timely: Use blogs/notes to record problems and solutions (recommended CSDN, Zhihu), which serves both as a review and as a source of interview material.
5. Frequently Asked Questions
5.1 Can Beginners Learn Embedded Systems?
Yes! High school knowledge + persistence is sufficient. Embedded systems are a “skill that comes with practice”, with a lower threshold than mathematics and algorithms; the key is “more practice”.
5.2 Should I Use HAL Library or Standard Library for STM32?
Beginners should prioritize the standard library:
- The standard library code is concise and suitable for understanding peripheral principles;
- The HAL library is bloated for compatibility with multiple chips, with a higher learning cost;
- After mastering the standard library, getting started with the HAL library only takes 1-2 days.
5.3 Do I Need to Learn 51 Microcontroller First?
No need. The differences between 51 and STM32 are significant (8-bit vs 32-bit), and learning STM32 directly is more efficient; you can grasp peripheral principles in STM32 as well.
5.4 Do I Need to Learn Digital and Analog Electronics Before Learning STM32?
No! Initially, just be able to use the development board; when encountering hardware issues (e.g., circuit faults), learn specifically to avoid being discouraged by theory.
5.5 What Level of Knowledge is Required to Find a Job?
- Entry-level: Knowledge of STM32 basic peripherals + simple projects (e.g., environmental monitoring);
- Mid to senior level: Mastery of FreeRTOS kernel + STM32 kernel + toolchain (e.g., IAP) + performance optimization.
5.6 What if I Can’t Write Code?
The core reason is “writing too little”. Start by imitating examples (changing parameters, adding comments), then write simple functions, and finally work on independent projects—after writing over ten thousand lines of code, you will naturally “conceive”.
6. Salary Correspondence to Skills Reference
- 3-5k: Knowledge of STM32 basic peripherals, able to do simple applications (e.g., lighting up a screen, reading sensors);
- 7-8k: Mastery of basic FreeRTOS usage, able to integrate middleware (e.g., LVGL) to create comprehensive projects;
- 10k+: Understanding STM32 kernel + FreeRTOS principles, able to solve debugging challenges (e.g., memory leaks, task conflicts);
- 30w+: Proficient in toolchains (e.g., compiler optimization, linker scripts), able to tackle technical challenges (e.g., low power design, high reliability OTA).
Final Thoughts
There are no “shortcuts” in embedded learning, but there is a “path”—from C language to STM32, from application to kernel, from imitation to innovation. The key is to “start doing”: light up the first LED today, achieve the first serial communication tomorrow, and in six months, you will be able to develop projects independently.
Technical growth is like a snowball; it starts slow, but every step accumulates potential for the future. Following this path and persisting for 1-2 years, you will find that what once seemed difficult—”kernel” and “RTOS”—has become your “advantage”.
Wishing everyone a smooth journey in embedded systems, advancing steadily and landing your desired offer!