Studying, single-piece c language programmingEmbedded developmentThe focus base, particularly for engineers who want to engage in areas such as physical networking, smart hardware and automated controls, is critical. The following is a systematic, well-defined, single-formula c language learning route, ranging from a zero-basic introduction to the ability to independently develop projects that are suitable for students, e-lovers or converters。
I. Learning objectives
With this route, you will be able to:
Ii. Studies for learning (rule of recommendment) . 1: c language basic (essential)
If you have a c language base, you can skip or study properly。
Learning content: recommended resources: stage 2: knowledge of basic learning content on a single machine: recommended entry machine: stage 3:51 + c language action (recommended introduction) learning content: practical project: stage 4: stm32 + c language (main selection of progress)
Stm32 is the 32-bit single-piece machine that is currently very mainstream in the industry and is based on the arm cortex-m kernel, which has a strong performance and is suitable for complex projects。
Learning content: development approach recommendations: practical projects: stage 5: esp32 or other high performance mono-mechanical machines (optional/material network orientation)
If you're interested in wi-fi, bluetooth, and materials networking, you can learn ess32, which contains wi-fi+ bluetooth and supports artino or esp-idf。
Learning content: stage 6: integrated project operational (capacity enhancement) recommendations (from simple to complex):
Smart cars (electricity control, infrared shield, ultrasound ranging)
Temperature humidity monitoring system (dht11/dht22+oled/string)
Electronic clock (rtc real time clock + lcd display)
Smart home control (by mobile phone/web/wi-fi for light, electrical)
Multifunctional development panel (self-designed effects set: keys, led, sensors, communications, etc.)
Simple task schedule based on rtos (e. G. Freertos for stm32)
Iii. Learning and environmental development tools:
Programming download tool:
Simulation and debugging:
Iv. Relief resources recommended books: v. Research resources: v. Resources and contents
(a) do it > read it: the primary focus of single-piece learning is on practice, with each knowledge point writing code, burning and impact
(a) from an easy start, step by step: instead of starting with complex projects, light up a led and gradually increase its impact
(a) understanding the principles, not writing down the codes: understanding the workings of the hardware and the meaning behind the codes
(a) multi-project and experience: after learning the basics, it is necessary to do several complete projects to integrate knowledge
Adhesion and interest: the entry threshold for embedded development is a certain one, but it is extremely interesting and practical, maintaining curiosity and motivation for continuous learning。
Vi. An overview of the purpose of the learning cycle
C. Language base
Mastering the programming language core and laying the foundation for a single-film mechanism
Introduction to single machine principles
Know what a single machine is, what it is, how it works
Fifty-one planes
It's real, easy, efficient
Stm32 development (recommended)
Mainstream 32-bit single-piece, powerful, career development mainstream
Esp32 / networking orientation (optional)
Suitable for wireless communications, intelligent homes, cloud connections
Integrated project operations
Integration of knowledge, exercise of system design, problem resolution
When studying a single machineCircuit knowledgeIt's a very important foundation, especially when you start to contact hardware connections, sensors, drive circuits, power design, etc. Many beginners find themselves caught in the trap of “code running, but not knowing why the circuits are so connected”, even because the faulty design of the circuits has led to the destruction of the single machine or the failure to function。
I will now systematically explain to you, “why do you study circuits”, “what kind of circuits you need to learn on a single machine”, “how to learn circuits efficiently”, and “how to learn how to learn circuits on a single machine,” to help you develop a “soft-and-hard combination.”。
I. Why do you learn how to read a single machine
The single machine is itself a chip that cannot work alone and must work with the outer circuits:
Conclusion: without access to the circuit, the code you wrote may not function properly or even burn the chip
Ii. What kind of circuits do you need to learn about single machines
The following are the circuits that you, as a single machine learner, should gradually acquire from the early stages to the advanced stages, in order of importance and frequency:
1. Concept of basic circuits (must understand)
These are the bases on which you understand all the circuits
Importance of the concept note
& voltage
Power differential, unit volts (v), e. G. 3. 3v, 5v
& electricity
Rate of charge flow, per a (a), e. G. Ma
& resist
Limiting current, unit om
Om law: u = i x r
The most basic circuit formula
Power & negative / local (gnd)
Circuit reference zero
Thread / connect to circuit
Impact on voltage and current distribution
Diode
One-way conductor, often used to protect circuits
Electric
Storage, filtering, coupling
Led
One of the most commonly used output devices for single machines
2. Mini-platform circuits (required)
It's the most fundamental circuit for a single machine to work. You must understand:
Module description
Power circuits
Provides a stable 3. 3v or 5v for a single machine (e. G. Through usb or steady press chip)
Crystal vibration circuit (clock)
Provides a rhythm run by a single machine (e. G. 8 mhz, 11. 0592 mhz, 12 mhz, etc.)
Reset circuits
Guarantee the correct initialization of a single machine when it is wired or manually reset
Download/debug interface
For example, uart, swd, jtag, for burner programs
Recommendation: direct use of development boards (e. G. Stm32, 51 development boards) at the beginning of school, but it is important to understand the role of these circuits and to draw the rationale for the smallest platform itself。
3. Gpio (general input output) connection to peripheral equipment
A single machine that interacts with the outside world, like control leds, reading buttons: gps
Apply description of common circuits
Control led
Single io mouth led led gnd
I'll learn
Read keys
One end of key to io port, one end to ground, with upper/lower drag
I'll learn
Driver beeper
An active/inactive beeper, which may require a triode or mosfet driver
Recommendations
Connecting sensors (e. G. Dht11, photo-sensitivity resistance)
Understand digital/simulation signal input
Recommendations
Focus: io mouth cannot directly drive large current loads (e. G. Electrics, relays) and needs to drive circuits
4. Drivers of circuits (major!)
Many external installations (e. G. Electrics, relays, led lamps) require large currents, and single io mouths generally provide only a few milligrams and must be driven:
Device drive description
Led group / relay
Triodes (e. G. S8050), mosfet (e. G. 2n7000)
Control the triodes with io mouth, magnifying the current of the triode
Electrical ( straight current, step-in)
L298n, tb6612, mos bridge
Special drive module or chip required
Beeps (sourced/irradiated)
Tripolar or dedicated drive ic
It's important to distinguish between active and passive
Learn to read driving circuit charts, learn to use npn/pnp triodes, mosfet。
5. Communications interface circuits (upgrading capacity)
The single machine often communicates with other equipment such as:
Interface describes common applications
Uart (string)
Radio and computer/bluetooth module/gps
I'll learn
I2c
Connect sensors (e. G. Mpu6050, old)
Recommendations
Spi
High-speed communications such as connection to flash, display screen
Recommendations
Usb / can / ethernet
Advanced communication, advanced learning
It's after school
Communications circuits tend to involve details such as levelling, lifting resistance, terminal resistance, etc., and understand the rationale。
6. Power management and protection of circuits (step forward) function statement
Steady the circuit
E. G. Lm7805 (5v), ams1117-3. 3(3. 3v)
Turn the high voltage into a single machine
It's a power supply
Filtering, steady voltage, jamming
Every chip should be near the main source
Reverse protection of diodes
Preventing power supply from burning circuits
It's common in battery power
/ self-recovery insurance
Passage protection
Protect the system
Iii. How to efficiently learn the circuit? Method 1: start with the minimal system of a single camera, draw a hand-drawn picture + physical control method 2: learn a circuit, do a project involving the goal of the circuit learning
Led flash
Gpio + led + limit electrical resistance
Io output, resistance
Key control light
Gpio input + up-barrel
Keys shivering. Enter circuits
Pwm lighting
Gpio + mosfet + led
Pwm output, drive circuit
Electrical control
L298n driver + straight current powerer
H-bridge drive, electrical circuit
Sensor reading
I2c/spi sensor + single plank
Communications and interface circuits
Recommendation: for each mechanism to be studied, a chart of its electrical circuits is drawn and made available on the board。
Method 3: integration of simulation software learning (zero-risk circuits)
Before welding, it can be verified using circuit simulation software:
Tool description
Proteus
Supports single-piece emulsion + circuit (suitable for 51/stm32)
Multisim
Traditional circuit imitation, basic circuit learning
Tinkercad
Online, easy to use
Eda / easyeda
Online drawing of principles + pcb, good for national production
Method 4: understand other people's circuit maps (reverse learning)
Using business city, lcsc, treasure hunting, many modules have principles. Figure
Learn to watch: power, signals, interfaces, outer circuits of chips
Iv. Recommendment of learning resources
The basis for the analysis of circuits — suitable for building the theoretical basis of circuits
Electronic technology foundation (simulation & numbers section) - convagiar light (classical higher education materials)
Design of the outer circuits of single-piece machines - for sensors, communications, driving circuits
" embedded hardware design " : the advanced hardware design thinking
Video advertising (b/youtube) v, summary: how do you learn to learn how to learn how to read a single machine? Suggested steps
First master basic electrical concepts (voltage, current, resistance, om law)
Understanding the minimum system of single-piece machines (power, crystallization, repositioning, downloading circuits)
Focus on gpio connections to peripherals (leds, keys, sensors)
Learning to drive circuit design (triode/mosfet driver/led group)
Access to communication interface circuits (uart, i2c, spi)
Do something + draw a circuit map + imitate/feature, each function, make a plan
Progress: power management, pcb design, protection of circuits, etc
One of the core tools is to study single-piece machines and enter embedded development. Although the language most commonly used in the development of a single machine is c (and a compilation of some scenarios, c++, python, rust, etc.), truly embedded development is not enough for c alone. It also requires a range of relevant languages and skills and targeted learning at different levels and directions of development。
What are the languages commonly used in embedded development? Whether the application of a language must be described
C language
Single machine development (e. G. Stm32, 51, avr), bottom drive, rtos
I have to
Embedded development core, most widely used language
C++
Embedded linux, gui development, complex applications, ros, drones, etc
Recommended studies
More use on platforms where resources allow (e. G. Linux, arm cortex-a)
Python
Listing machines, scripts, edge calculations, internet gateways, strawberry pies
Recommendations
Suitable for efficient development, debugging, data processing, communications protocols, etc
Assembly
Extreme bottom optimization, start code, chip transplant
Not normally
It's good to know that special situations (e. G. Bootloader, performance optimization) may be used
Rust
Emerging embedded security architecture (e. G. Rtic, embedded rust ecology)
Future trends
High security and growing prevalence in embedded areas, but ecology is still developing medium
Lua / micropython
Embedded scripts, lightweight controls (e. G. Ets32, openmv)
Optional
Suitable for rapid prototype development and education
Bash / shell / makefile
Embedded development environment construction, automated compilation, solid burn scripts
Recommendations
Scripts required for engineers and build applications
Why is learning “relevant languages” important for embedded development
Embedded production, twilight, only c language
A complete embedded project usually has multiple levels:
Level description of commonly used languages
Bottom (mcu level)
Monophone program, driver development, repository operation, interruption, hardware control
C language (major), partial compilation
Intermediate layer (communication/agreement/ algorithm)
Sensor data processing, communication protocols (e. G. Mqtt, modbus), algorithms achieved
C/ c++ / python
Upper layer (application/ui/ cloud connection)
Graphical interface, web application, cell phone app communication, cloud platform interface
C++ / python / java / js / lua
Tool chain/script
Compile scripts, automation tests, solid packaging, burn programs
Make / bash / python
Conclusion: only c language, you can do "back-to-back control of a single machine"; you can do the whole product with more language
Iii. How can relevant language be learned in a targeted manner in line with your objectives
I'm going to comb you in different embedding directions, "what language / skills should be learned in addition to the c language" to help you become a more comprehensive embedding developer:
Direction 1: traditional single machine development (e. G. Stm32/51/ avr) must:
Compendium (optional)
Recommended additions:
Python
Shell / bash
Recommendation: the c language is first conversed with the external (gpio, timer, uart, i2c, spi) and then gradually expanded。
Direction 2: embedded linux development (e. G., strawberry pie, arm cortex-a, industrial control) must:
Bash / make / cmake
Linux system programming
Embedded linux projects are often a combination of “c bottom drive + c++/python upper applications”。
Direction 3: iot development (e. G. Ess32, nb-iot, lora, wi-fi module) must:
JavasCript / node. Js (optional)
Micropython / lua
Networking = single machine (c) + communication protocol (mqtt/http) + cloud platform (python/node. Js)
Direction 4: carborne / industrial / safety critical embedded system
The reliability, real-time, security requirements of such orientations are extremely high, the language is software and standards and norms are more important。
Iv. Recommendations on language learning pathways (in combination with embedded directions)
C language (exact)
Gpio, break, timer, communication protocol, reading and writing repository
C++ (selection)
Lay the foundation for subsequent linux / gui / complex applications
Python
For scripts, communications, data processing, cloud interfaces, automation
Shell / make / cmake
Get familiar with the construction and programming chain in embedded development
Communication protocol language (e. G. Json, mqtt, http)
For equipment networking, cloud platform interaction
Others (e. G. Rust / lua / matlab)
Learning on demand, such as security critical systems, fast prototypes, etc
V. Recommendment of learning resources purpose recommended language role
Control hardware, handle repository, write bottom drive
C language
Embedded core development language
Complex applications, graphical interfaces, multiple threads
C++
Appropriate for resource-rich embedded platforms (e. G. Linux)
Rapid construction, communications, data processing, cloud interface
Python
Embedded upper layer application, tool development preferred
Scripts, automation, engineering
Shell / make / bash
Development of efficiency tools
Future trends / secure embedded
Rust
Emerging language, gradual application to embedded
Prototype for efficiency / use in education
Micropython / lua
Fits to lightweight mmu (e. G. Ets32)
Your next recommendations:
Combining the c language with a single machine to switch to common externals (gpio, timers, serials, sensors)
Learn something, python, for testing scripts, data processing, communication protocols
Read c++ and linux system programming if you want to do more complex embedded linux projects
Depending on your specific orientation (e. G. Iot, auto, industry), learn other languages or tools as needed
If you tell me:
I can customize one for you:
A detailed learning path and project planning for “a gradual acquisition of embedded relevant languages and skills, starting with c languages”
Welcome to the question










