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.

Lesson: Hardware basics for software developers

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.

Lesson: UART, I2C and SPI

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.

Lesson: ADC: reading the analog world

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.

Lesson: ADC: reading the analog world

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.

Arduino Uno pinout

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.

Lesson: UART, I2C and SPI

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.

Lesson: C for embedded

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.

Lesson: The road to senior

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.

Lesson: Hardware basics for software developers

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.

Lesson: Hardware basics for software developers

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.

Lesson: The road to senior

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.

Lesson: UART, I2C and SPI

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.

Lesson: The full picture

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 Ω.

Lesson: Hardware basics for software developers

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.

Lesson: ADC: reading the analog world

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.

Lesson: GPIO: pins in and out

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.

Lesson: The full picture

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.

Lesson: PWM, state machines and more

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.

Lesson: PWM, state machines and more

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.

Lesson: C for embedded

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.

ESP32 DevKit pinout

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.

ESP32 DevKit pinout

F

Firmware

The program that runs on a microcontroller. It is stored in flash memory and starts every time the device powers on.

Lesson: The full picture

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.

Lesson: C for embedded

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.

Lesson: The full picture

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.

Lesson: GPIO: pins in and out

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.

Lesson: The road to senior

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.

Lesson: UART, I2C and SPI · I2C parts and their addresses

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.

Lesson: UART, I2C and SPI

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.

Lesson: Timers and interrupts

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.

Lesson: Timers and interrupts

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.

Lesson: The full picture

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.

Lesson: Hardware basics for software developers

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.

Lesson: The road to senior

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.

Lesson: The road to senior

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.

Lesson: Hardware basics for software developers

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.

Lesson: PWM, state machines and more

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.

Lesson: What is a microcontroller?

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.

Lesson: What is a microcontroller?

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.

Lesson: What is a microcontroller?

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.

Lesson: Hardware basics for software developers

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.

Lesson: RTOS: many jobs on one chip

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.

Lesson: Hardware basics for software developers

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.

Lesson: UART, I2C and SPI

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.

Lesson: The road to senior

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.

Lesson: The road to senior

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.

Lesson: GPIO: pins in and out

Pinout

The map of what each pin of a board or chip does: power, ground, GPIO numbers, bus pins, and special pins to avoid.

Lesson: GPIO: pins in and out · Pinouts of 13 boards

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.

Lesson: Timers and interrupts

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.

Lesson: Timers and interrupts

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.

Lesson: RTOS: many jobs on one chip

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.

Lesson: Hardware basics for software developers

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.

Lesson: PWM, state machines and more

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.

Lesson: RTOS: many jobs on one chip

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.

Raspberry Pi Pico pinout

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”.

Lesson: C for embedded · Lesson: What is a microcontroller?

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.

Lesson: RTOS: many jobs on one chip

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).

Lesson: ADC: reading the analog world

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).

Lesson: RTOS: many jobs on one chip

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.

Lesson: Hardware basics for software developers

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.

Lesson: UART, I2C and SPI

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.

Lesson: The full picture

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.

Lesson: RTOS: many jobs on one chip

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.

Lesson: UART, I2C and SPI

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).

Lesson: What is a microcontroller?

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.

Lesson: PWM, state machines and more

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.

ESP32 pinout: pins to avoid

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.

Lesson: RTOS: many jobs on one chip

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.

Lesson: Timers and interrupts

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.

Lesson: The full picture

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.

Lesson: UART, I2C and SPI

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.

Raspberry Pi Pico pinout

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.

Lesson: C for embedded · Lesson: Timers and interrupts

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.

Lesson: Hardware basics for software developers

W

Watchdog

A timer that restarts the chip if the code stops feeding it in time. A frozen device recovers by itself.

Lesson: PWM, state machines and more

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.

Download BoardPilot Try the lessons in your browser

← All lessons