Welcome to Embedded Systems from Source — a hands-on, diagram-rich, and concept-first guide to mastering embedded systems through real-world thinking and bare-metal coding.
Whether you're a student, an engineer returning to the basics, or a robotics enthusiast tired of YouTube rabbit holes — this course is for you.
- How microcontrollers actually work — not just how to use libraries
- Pointers, memory maps, and register-level control
- GPIO, timers, interrupts, and serial protocols (USART, I2C, SPI)
- The startup sequence and what happens before
main() - How to debug embedded systems like an engineer, not a guesser
- Toolchain pipeline: from code to binary to flash
- How to read a datasheet without your eyes glazing over
- (And eventually) how to write your own drivers
All content is structured in progressive modules with annotated code examples and original diagrams.
Click here to jump to your desired module!
| Module | Topic |
|---|---|
| 1 | Thinking Like an Embedded Engineer (MCUs, memory, registers) |
| 2 | Talking to Hardware (GPIOs, registers, bitfields) |
| 3 | Debugging When It All Breaks |
| 4 | Memory Matters (RAM, Flash, stack, heap) |
| 5 | Writing Your Own Drivers |
| 6 | Project: Solve a Real Problem |
| 7 | Engineering Best Practices |
| 8 | Intro to PCB Design |
| 9 | Intro to Embedded OS Concepts |
All custom diagrams and screenshots are stored in the assets/ folder and are used throughout the course with context.
/assets – conceptual illustrations (registers, memory maps, toolchain)
This is a read-first, code-later course. To follow along:
- Clone the repo or view it on GitHub.
- Open each module
.mdfile in order. - Optional: Use Obsidian for a local, interactive Markdown experience.
Bonus: Code samples are provided in
/Module_1/CodeExamplesand written for the STM32F103 (Blue Pill), and the STM32F407 Discovery Board.
- Diagrams created using Excalidraw / draw.io / Figma.
- Reference material pulled from STMicroelectronics' official datasheets.
Too many embedded tutorials either:
- Skip the "why" and go straight to "copy this code"
- Assume you're already an EE grad with 10 years of experience
This course bridges the gap — combining clarity, practicality, and depth — for anyone who wants to understand embedded systems from the inside out.
Got a bug, question, or insight? Open an issue or start a discussion — this course is meant to evolve with its learners.