1. Project Classification:
1. Projects involving “hardware + software” interaction (e.g., “Environment Monitoring Device Based on STM32”).
2. Projects related to embedded core technology stack (e.g., MCU/MPU models, real-time systems, communication protocols, development tools).
3. Projects with “problem-solving” or “optimization results” (e.g., “Resolved sensor data packet loss issue” or “Reduced program runtime memory from 8KB to 5KB”).
2. Project Description Method:
Follow the structure of “Development Environment/Programming Language → Development Tools → Technical Implementation/Project Process (Key Focus) → Project Summary”, where “Technical Implementation/Project Process” should occupy more than 60% of the content, highlighting the “underlying logic + practical details” of embedded development.
1.Project Naming: Clearly state “what you did and why you did it” to highlight the core application of the project.
Incorrect Example: “STM32-based Environmental Monitoring System” Correct Example: “Testing data acquisition, local display, and cloud upload functions in a low-power environmental monitoring terminal based on STM32.”
2. Core Responsibilities: Clearly define “what you did” to avoid vague team contributions.
“Participated in project development” and “Assisted in completing code” do not clarify your contributions. Use “first person + specific role” to clearly define responsibilities.
For example:
Hardware Side: “Responsible forcore hardware circuit design (power supply, sensor interface) andPCB layout“
Software Side: “Independently completed STM32 low-level driver development (I2C, UART) andFreeRTOS task scheduling“
Full Process: “Led the entire process from requirement analysis to prototype validation, including hardware selection, software coding, and joint debugging testing.”
3. Technical Implementation (Project Process):
In embedded systems, the “core plus bonus area” should include “details + logic”.
Key parts should be broken down into “hardware design → software development → debugging and optimization”, linking specifictechnologies and operations, avoiding vague statements like “used XX technology“, and instead write “how XX technology solved what problem (achieved what function)”.“
(1) Hardware Design: Write “selection reasons + design details” (especially important for embedded positions).
Selection: Instead of saying “selected STM32”, say “selected STM32L431RCT6 (low-power model) because the project requires battery power, this model has a sleep current < 1μA, meeting endurance requirements”;
Circuit: Instead of saying “drew PCB”, say “designed core circuit (including 5V to 3.3V LDO power module, SHT30 temperature and humidity sensor I2C interface circuit), completed 2-layer PCB layout using Altium Designer, avoiding power ripple interference (by paralleling a 100nF capacitor at the LDO output)”;
(2)Software Development:
Write “development environment + core modules + code logic” (demonstrating programming ability and low-level thinking), clearly stating “development environment (Keil MDK5), programming language (C language), toolchain (ARM GCC)”;
Low-level Drivers:
Instead of saying “wrote I2C“, say “initializedI2C peripherals (configured clock to 400kHz), implemented sensor data reading function (including CRC check to avoid data errors), encapsulated as a reusable interface for upper layers”;
Operating System/Protocol:
If usingRTOS or communication protocols, writespecific applications.
Code Optimization:
Instead of saying “optimized the code“, say “optimized UART communication efficiency: original polling reception method occupied 80% CPU, changed to DMA + interrupt reception, CPU usage dropped to 15%, while also solving data packet loss issue”.“
4. Project Summary (Debugging and Optimization): Write “problems encountered + solutions” (demonstrating troubleshooting ability, which is highly valued in embedded positions), focusing on “problem-solving approach“.
For example:
“During debugging, found OLED display garbled: after troubleshooting, identified as an I2C timing issue (SCL high level time insufficient), resolved display anomaly by adjusting STM32 I2C peripheral clock division factor (from 16 to 8)”;
Summary:
Four “don’ts” in writing embedded projects:
Do not only write “tool/technical terms”, without writing “operations”: for example, “used FreeRTOS”, instead say ““used FreeRTOS to create XX task, used XX synchronization mechanism to solve XX problem”;;
Do not avoid “basic projects”, but “dig deeper”: even course designs (e.g., “STM32 Blinking Light”) can be optimized to “intelligent blinking light based on STM32 (adding human sensing, lights on when someone is present, lights off when no one is present, reducing power consumption)” to reflect thought;
Do not exaggerate “team contributions”: if you only did the software part, clarify “approached from the software development perspective”;
Do not overlook “low-level details”: embedded positions value “low-level thinking”, for example, when writing I2C communication, mention “clock frequency, addressing method, CRC check”, rather than just saying “used I2C to read data”;“;

Time may pass quietly
but it silently measures every step of effort!
Extracurricular Class
Embedded Interview Common Questions– C Language Variables
1.Defining Constantsdefine andconst
define can replaceconstant values, can also replaceexpressions, and evencode segments, but it is prone toerrors.
The lifecycle of define constants ends atcompile time,does not allocate memory space, it exists in the program’s code segment, and in the actual program, it is just a constant;
const constants havedata types, const constants exist in the program’sdata segment, and space is allocated in the stack,const constants actually exist in the program and can becalled and passed;
Many IDEs support debugging constants defined by const but do not support constants defined by define, because variables modified by const can eliminate unsafe factors between programs,protecting constants in the program from being modified, so it is generally preferred to use const to define constant types.
2. Differences Between Global Variables and Local Variables
1.Scope: Global variables are forprogram blocks, while local variables are forthe current function;
2.Memory Storage:, global variables are allocated in theglobal data area, while local variables are allocated in thestack area;
3.Lifecycle: Global variables are created with the main program and destroyed with the main program, while local variables exist withinlocal function, or even within local loops, and disappear upon exit.
4.Different Usage:, global variables declared can be used by all parts of the program, while local variables can only be used inlocal usage;;
5. Default Values: Uninitialized global variables are0 (or NULL), during compilation, uninitialized global/static variables are placed in the .bss section, and when the program starts, the OS (or bootloader) automatically clears the .bss section to avoid dirty data affecting the program;
Uninitialized local variables haverandom values; the stack is a “dynamically allocated” memory area, and the space for local variables is temporarily requested from the stack, with its value being theresidual data from the last use of the stack space;
3. Differences Between VariableDefinition and Declaration:
Variable Definition: Allocates memory space for the variable and can optionally initialize (a variable can only be defined once in the entire program, otherwise it will report a “duplicate definition” error);
Variable Declaration: Only informs the compiler “the type and name of the variable”, does not allocate memory (the purpose is to let the compiler know of its existence before using the variable, and it can be declared multiple times), requiring the extern keyword;
Common Interview Mistakes Summary::
1.Can local variables have the same name as global variables?
Yes, local will shadow global;
When referencing this variable within a function, the local variable with the same name will be used, not the global variable. For some compilers, multiple local variables with the same name can be defined within the same function, such as defining a local variable with the same name in two loop bodies, where the scope of that local variable is within that loop body.;
2.Can global variables be defined in header files included by multiple .C files? Why?
1.Yes, global variables can be declared in different C files using extern for the same global variable..
2.Yes, global variables with the same name can be declared in different C files, provided that only one C file initializes this variable, in which case linking will not cause errors..
Extracurricular Class, class dismissed!
Thursday, August 28, 2025 Sunny