Embedded systems glossary
86 words you meet when you start with microcontrollers, each explained in two or three plain sentences, with the lesson that covers it.
A
- Absolute maximum ratings
Limits in a datasheet that must never be exceeded, not even for a moment, or the chip may be damaged. They are not working conditions: normal use belongs within the recommended operating conditions.
- ACK and NACK
After each I2C byte the receiver pulls SDA low to acknowledge it (ACK). If the line stays high (NACK) after an address, no device answered at that address: wrong address, wrong wiring or no power.
- ADC (analog-to-digital converter)
A peripheral that takes snapshots of a voltage and turns each one into a number. A 12-bit ADC gives 0 to 4095, so at 3.3 V each step is about 0.8 mV.
- ADC resolution
How many steps the ADC divides its range into: 10 bits give 1024 steps, 12 bits give 4096. More bits means finer steps, not necessarily a more accurate reading: noise and the reference voltage matter too.
- Arduino
An open platform of boards (such as the Uno, with the ATmega328P chip), a simple C++ library and an editor. Its functions, such as digitalWrite() and analogRead(), now run on many chips, including the ESP32 and the RP2040.
B
- Baud rate
The speed of a UART link in symbols per second, such as 9600 or 115200. Both sides must use the same one; a mismatch shows up as garbage characters in the serial monitor.
- Bit masking
Changing or testing one bit without touching the others: REG |= (1 << n) sets it, REG &= ~(1 << n) clears it, REG ^= (1 << n) flips it and REG & (1 << n) tests it.
- Bootloader
A small program that runs first after reset. It can load a new firmware (over USB, serial or radio) and then starts the main program. Chips such as the ESP32, the RP2040 and the STM32 have one built into their ROM.
- Breadboard
A plastic board with spring contacts for building circuits without soldering. The five holes in each short row are connected; the long rails along the sides usually carry power and ground.
- Brownout
A dip in the supply voltage that is too low for the chip to run reliably, often when Wi-Fi or a motor draws a burst of current. The brownout detector resets the chip; a stronger supply or a capacitor near the board usually fixes it.
C
- CAN bus
A robust two-wire bus from cars, now common in industry. Every message has an identifier that also sets its priority; each node needs a transceiver chip such as the TJA1050 or the SN65HVD230.
- Chip select (CS)
The SPI wire that tells one device “I am talking to you”. It is usually active LOW: devices whose CS is HIGH ignore the bus.
- Cross-compiler
A compiler that runs on your computer but produces code for a different processor, such as an ARM Cortex-M or the Xtensa core of an ESP32.
- Current-limiting resistor
The resistor in series with an LED. It takes the voltage the LED does not drop, so the current stays safe: R = (supply − LED voltage) / current. For a red LED on 3.3 V at 5 mA: (3.3 − 2.0) V / 0.005 A = 260 Ω, so buy 270 Ω.
D
- DAC (digital-to-analog converter)
The opposite of an ADC: it turns a number into a voltage on a pin. The original ESP32 has two 8-bit DACs; many microcontrollers have none and use PWM with a filter instead.
- Datasheet
The manufacturer’s document for a chip or module: supply voltage, pins, interface, registers, timing and limits. The first page gives the essentials; reading datasheets is a core embedded skill.
Lesson: Hardware basics for software developers · Lesson: ADC: reading the analog world
- Debounce
Real buttons bounce: for a few milliseconds the contact flickers between 0 and 1. Debouncing filters this, in software (wait until the level is stable) or with a small capacitor, so one press counts as one.
- Debugger
A hardware probe plus software that pause the chip so you can look at variables and registers, line by line. Many boards have one built in, such as the ST-LINK on a NUCLEO board.
- DMA (direct memory access)
A hardware block that moves data (ADC samples, UART bytes, screen pixels) between peripherals and memory in the background while the CPU does other work, then raises an interrupt when it is done.
- Duty cycle
The share of each PWM period that the pin stays on. 25% on a 3.3 V pin averages about 0.8 V.
E
- Embedded system
A small computer built into a device to do one job, such as a thermostat, a washing machine or the brakes of a car. Its heart is usually a microcontroller.
Lesson: What is a microcontroller? · Lesson: The full picture
- Endianness
The order of the bytes in a number bigger than one byte. ARM Cortex-M, ESP32 and AVR chips are little-endian (lowest byte first), while many sensors send the highest byte first, so you often combine bytes as (high << 8) | low.
- ESP32
A family of Espressif microcontrollers with Wi-Fi and Bluetooth built in, popular for connected projects. Its pins take 3.3 V at most.
- esptool
Espressif’s command-line tool that talks to the ESP32’s ROM bootloader over serial: it identifies the chip and reads, writes and erases the flash. BoardPilot uses it to back up and flash ESP32 boards.
F
- Firmware
The program that runs on a microcontroller. It is stored in flash memory and starts every time the device powers on.
- Fixed-width types (uint8_t, uint32_t)
C types from <stdint.h> with the size in the name. Embedded code uses them because a plain int changes size from chip to chip, while a register has an exact size.
- Flash memory
Memory that keeps its contents without power. On a microcontroller it holds the program, and sometimes saved settings. Writing a program into it is called flashing.
Lesson: What is a microcontroller? · Lesson: The full picture
- Flashing
Writing a compiled program into the microcontroller’s flash memory, through a programmer or debugger (for example an ST-LINK), or through the chip’s bootloader over USB or serial.
- Floating input
An input connected to nothing. It picks up noise and reads random values. A pull-up or pull-down resistor gives it a defined level.
Lesson: Hardware basics for software developers · Lesson: GPIO: pins in and out
G
- GPIO
General-purpose input/output: a pin your code controls. As an output it puts 3.3 V (5 V on boards such as the Arduino Uno) or 0 V on the wire; as an input it reads whether the voltage from outside is high or low.
H
- HAL (hardware abstraction layer)
A library that hides the registers behind function calls such as HAL_ADC_GetValue(). Easier to read and to move to another chip; direct register access is smaller and faster.
Lesson: ADC: reading the analog world · Lesson: The road to senior
- Hard fault
The exception an ARM Cortex-M raises when something goes badly wrong, such as a bad pointer or a stack overflow. Finding the cause from the saved registers is a core senior skill.
I
- I2C
A two-wire bus (SDA for data, SCL for the clock) where many devices share the same wires and each one has an address. Used for sensors and small screens. Both lines need pull-up resistors.
- I2C address
A 7-bit number, written like 0x76, that each device on an I2C bus answers to. Many modules have a pin or a solder jumper to choose between two addresses, so two identical sensors can share one bus.
- Interrupt
A signal from the hardware (a pin change, a timer, a received byte) that pauses your code, runs a short handler, then continues exactly where it stopped. For a software developer: an event callback, triggered by hardware.
- ISR (interrupt service routine)
The function that runs when an interrupt fires. Keep it short: clear the interrupt flag, set a variable and leave. Variables it shares with the main code must be volatile.
J
- JTAG and SWD
Debug interfaces that a debugger uses to flash the chip, stop it and read its memory. SWD is ARM’s two-wire version (SWDIO and SWCLK), used on STM32, RP2040 and nRF52 chips.
- Jumper wire (Dupont)
A short wire with a pin or a socket at each end, for connecting a board to a breadboard or a module. A loose or broken jumper causes many “sensor not found” problems.
L
- Level shifter
A small circuit or module that translates signals between 5 V and 3.3 V logic. Bidirectional ones, often built with BSS138 transistors, work for I2C.
Lesson: Hardware basics for software developers · BSS138 level shifter module
- Linker script
A file that tells the linker where flash and RAM are, and where each part of the program goes. You edit it when you move beyond the defaults, for example to make room for a bootloader.
- Logic analyser
A tool that records many digital signals at once and decodes buses such as I2C, SPI and UART into bytes, so you can see what was really sent.
- Logic level (HIGH and LOW)
The voltage that counts as 1 (HIGH) or 0 (LOW). On a 3.3 V board a voltage near 3.3 V reads HIGH and one near 0 V reads LOW; 5 V boards such as the Arduino Uno use 5 V. Voltages in between are not guaranteed to read either way.
- Low power and deep sleep
Sleep modes switch off most of the chip and wake it on a timer or a pin interrupt. The MCU sleeps almost all the time: in deep sleep an ESP32 draws microamps instead of tens of milliamps, which is how a battery lasts for months or years.
M
- MCU vs MPU (microprocessor)
A microprocessor (MPU) is mostly a CPU: memory and many peripherals are separate chips, and it usually runs a full operating system such as Linux, like a Raspberry Pi 4. A microcontroller keeps everything on one chip, has kilobytes of memory and starts in microseconds.
- Memory map
The list of which addresses hold flash, RAM and the registers of each peripheral. On an STM32F4, for example, flash starts at 0x0800 0000, RAM at 0x2000 0000 and the peripherals at 0x4000 0000.
- Microcontroller (MCU)
One chip that holds a whole small computer: a CPU, flash memory for the program, RAM for the variables, and peripherals such as GPIO, timers, ADC, UART, I2C and SPI.
- Multimeter
A handheld meter for voltage, current, resistance and continuity. The first tool to check that a supply is really 3.3 V, or that two points are really connected.
- Mutex
A lock that protects something shared, such as the UART, so two tasks do not use it at the same time. Mutexes with priority inheritance prevent priority inversion.
O
- Ohm’s law
V = I × R: voltage equals current times resistance. Know two of the three and you get the third, for example the resistor an LED needs.
- Open-drain (open-collector)
An output that can only pull a line to ground or let it go. A pull-up resistor brings the line back HIGH. I2C works this way, so several devices can share one wire without fighting.
- Oscilloscope
A tool that draws a voltage over time. It shows what a logic analyser cannot: slow edges, noise, ringing and dips in the supply.
- OTA update (over the air)
Installing new firmware over Wi-Fi, Bluetooth or another radio. Safe designs keep two firmware slots, so a failed update can never leave the device unable to start.
P
- Peripheral
A hardware block inside the microcontroller that does one job by itself: GPIO, timers, ADC, UART, I2C, SPI, DMA. You control it by writing its registers.
Lesson: What is a microcontroller? · Lesson: UART, I2C and SPI
- Peripheral clock (clock enable)
Peripherals start switched off to save power. Before using a port or a bus you turn on its clock in a register (RCC on an STM32); forgetting it is the most common beginner bug.
- Pinout
The map of what each pin of a board or chip does: power, ground, GPIO numbers, bus pins, and special pins to avoid.
- Polling
Checking a register or a pin again and again in a loop to see whether something happened. Simple, but it keeps the CPU busy; interrupts are the alternative.
- Prescaler and auto-reload (PSC, ARR)
The prescaler slows down the clock that feeds a timer; the auto-reload value is where the counter starts again from 0. Events per second = clock / (PSC + 1) / (ARR + 1): 16 MHz / 16000 / 1000 = 1.
- Priority inversion
A low-priority task holds a mutex that a high-priority task needs, and a medium task keeps running in between. Priority inheritance fixes it by raising the low task’s priority while it holds the lock.
- Pull-down resistor
A resistor from a pin to ground, so the pin reads LOW when nothing drives it. The opposite of a pull-up.
- Pull-up resistor
A resistor from a pin to the supply voltage, so the pin reads HIGH when nothing else drives it. A button or an open-drain device then pulls it LOW. Most chips have weak internal pull-ups (INPUT_PULLUP); I2C needs real external ones.
Lesson: Hardware basics for software developers · Lesson: GPIO: pins in and out
- PWM (pulse-width modulation)
Switching a pin fully on and off very fast and choosing how long it stays on. An LED or a motor feels the average, so PWM dims LEDs and sets motor speed. A timer does the switching, not the CPU.
Q
- Queue
An RTOS object that passes data safely from one task (or an interrupt) to another, in order. Safer than a shared global variable.
R
- RAM (SRAM)
Fast working memory for variables and the stack. It loses its contents when the power goes off. Microcontrollers have kilobytes of it, not gigabytes.
Lesson: What is a microcontroller? · Lesson: The full picture
- Raspberry Pi Pico
A small microcontroller board from Raspberry Pi with the RP2040 chip (the Pico 2 has the RP2350). Unlike the other Raspberry Pi boards it does not run Linux. You program it in C/C++ with the Pico SDK, in MicroPython or with Arduino.
- Register
A memory address that controls or reports hardware. Each bit switches one thing or shows one flag, such as “this pin is an output” or “data is ready”.
- RTOS (real-time operating system)
A small operating system for microcontrollers, such as FreeRTOS or Zephyr, that runs several tasks by priority. Real-time does not mean fast; it means predictable: the important task always runs within a known time.
S
- Sample rate
How many times per second an ADC takes a reading. Sample too slowly and fast changes are lost, or look like a slower signal (aliasing).
- Scheduler
The part of an RTOS that runs the most important task that is ready, even if it must pause another one. It is driven by a timer interrupt (the tick).
- Schematic
A drawing of how parts are connected, not where they sit. Wires that meet with a dot are connected; lines that cross without a dot are not. Labels with the same name (3V3, GND, SDA) are connected even when no line joins them.
- SDA and SCL
The two I2C lines: SDA carries the data, SCL the clock from the controller. Swapping them is one of the most common wiring mistakes: then nothing answers on the bus.
- SDK
Software development kit: the vendor’s libraries, headers, examples and tools for a chip, such as ESP-IDF for the ESP32 or the Pico SDK for the RP2040.
- Semaphore
An RTOS signal with a counter: one task or interrupt gives it, another task waits for it. Used to say “data is ready”, or to limit how many tasks use a set of resources.
- SPI
A fast bus with a shared clock (SCK), two data lines (MOSI from the controller, MISO back to it) and one chip-select wire per device. Used for SD cards, displays and flash memory.
- Stack
An area of RAM where function calls keep their local variables and return addresses. It grows and shrinks as functions are called; if it grows too far it overwrites other data (a stack overflow).
- State machine
A way to design device logic: the device is always in exactly one state (idle, heating, error), and events move it to another state. In C it is usually an enum and a switch.
- STM32
A large family of ARM Cortex-M microcontrollers from STMicroelectronics, widely used in industry. NUCLEO and Black Pill boards are cheap ways to start; the register examples in these lessons are written for an STM32.
Lesson: GPIO: pins in and out · Lesson: Timers and interrupts · NUCLEO-F401RE pinout
- Strapping pin
A pin the chip reads at reset to decide how it boots. On the ESP32 these are GPIO 0, 2, 5, 12 and 15; GPIO 12 HIGH at reset selects the wrong flash voltage and the board may not boot.
T
- Task
In an RTOS, a function with its own endless loop and its own stack, like a thread. The scheduler decides which task runs.
- Timer
A hardware counter that counts clock ticks by itself while the CPU does other work. It measures time, raises an interrupt at exact intervals or generates PWM.
- Toolchain
The set of tools that turn your code into a firmware file: compiler, assembler, linker and the libraries for your chip, for example arm-none-eabi-gcc for STM32.
U
- UART (serial port)
Serial communication between two devices: the TX of each one goes to the RX of the other, and there is no shared clock, so both must use the same speed. Used for debug messages to your computer, GPS and many radio modules.
- UF2
A firmware file format for drag-and-drop flashing: the board shows up as a USB drive and you copy the .uf2 file onto it. The Raspberry Pi Pico does this when you hold BOOTSEL while plugging it in.
V
- Vector table
A table at the start of flash that tells the CPU where the stack begins, where the startup code is, and which function handles each interrupt.
Lesson: What is a microcontroller? · Lesson: Timers and interrupts
- volatile
A C keyword that tells the compiler to read the value from memory every time, because the hardware can change it behind its back. Required for registers and for variables shared with interrupts; a missing volatile often breaks only optimised builds.
- Voltage divider
Two resistors in series that split a voltage in the ratio of their values: Vout = Vin × R2 / (R1 + R2). With R1 = 1 kΩ and R2 = 2 kΩ, 5 V becomes about 3.3 V, safe for a 3.3 V pin.
W
- Watchdog
A timer that restarts the chip if the code stops feeding it in time. A frozen device recovers by itself.
In the app, the lessons come alive
The lessons have interactive demos and hands-on labs checked on your board in the app. These pages are the readable version: the demos are described in words, and the labs need the app.