
This lecture describes how to install the ST-Link software in the Ubuntu operating system.
This video is a basic introduction to the STM32CubeMX configuration tool.
The video shows a quick and simple GNU ARM toolchain installation procedure.
This lecture provides a brief overview of the STM32F4Discovery board and the STM32F407VGT6 MCU.
The video shows the connection of an IR receiver VS1838 and LEDs to the STM32F4Discovery board.
This lecture provides a deep analysis of the NEC command recorded from a remote control.
This lecture is a brief section introduction. The section demonstrates how to use the STM32CubeMX tool and how to generate a project template, which we can use in our course.
This lecture explains how to configure the Reset and Clock Control Unit using the STM32CubeMX code initialization tool.
This lecture briefly explains how to configure the GPIO and external interrupts using the STM32CubeMX code initialization tool.
This lecture briefly explains how to make a basic configuration for Timer 3 using the STM32CubeMX code initialization tool.
This lecture shows how to enable interrupts globally and set their priorities in the STM32CubeMX.
A Makefile modification is important to automate the MCU flashing and erasing procedure.
This lecture provides an overview of the project folder structure and the NEC decoder high-level algorithm description.
This lecture describes the RCC unit initialization sequence and its important library functions.
This lecture demonstrates the GPIO initialization sequence for the LEDs and an IR receiver. The triggering of the external interrupt is covered as well. The corresponding peripherals drivers are explained to a certain extent.
This lecture demonstrates the complete timer 3 initialization sequence and the corresponding peripheral driver functions for the STM32 timers. There is an explanation of testing of timer's measurement accuracy.
The NEC decoder interrupt-driven functions are explained in detail in this lecture. This is the core part of the NEC decoding firmware.
This lecture describes the additional functions, which are used in the NEC decoder to provide better code portability.
This lecture demonstrates the testing of the NEC decoder on the STM32F4Discovery board. The commands from the remote control are shown by the eight orange LEDs. The four onboard LEDs can be toggled by the selected remote control buttons. This is a final lecture, which proves that everything works as expected. :)
This lecture contains links to external resources.
Learn STM32 Interrupt Programming by Building a Real Infrared Remote Decoder
Do you understand the basics of STM32 programming but still struggle to apply interrupts and timers in a real embedded application?
This course is designed to bridge the gap between theory and practice. Instead of learning STM32 peripherals through isolated examples, you'll build a complete interrupt-driven NEC infrared remote decoder from scratch using an STM32F4 microcontroller.
Unlike many courses that rely heavily on abstraction layers, we'll work directly with hardware registers so you gain a solid understanding of how the microcontroller really operates. By the end of the course, you'll know not only what to configure, but why each register and peripheral is needed.
By completing this course, you'll be able to:
Understand how the NEC infrared communication protocol works
Configure STM32 peripherals directly at the register level
Design interrupt-driven embedded applications
Configure and use GPIO, RCC, NVIC, EXTI, and hardware timers
Measure pulse widths using timer compare functionality
Read and interpret STM32 peripheral reference manuals with confidence
Debug and validate firmware running on real hardware
Build reusable embedded firmware without relying on high-level libraries
Build a Complete Embedded Project
Learning is most effective when you apply it to a real system.
Throughout the course, you'll develop a fully functional NEC infrared protocol decoder capable of receiving commands from a standard TV remote control and using them to control the LEDs on the STM32F4Discovery board.
This practical project demonstrates how interrupts, timers, state machines, and low-level peripheral configuration work together in a real embedded application—skills you'll use repeatedly in professional firmware development.
This course is ideal if you:
Already know the basics of C programming
Have some familiarity with STM32 or ARM Cortex-M microcontrollers
Want to understand interrupt-driven firmware beyond simple LED examples
Prefer learning through practical projects rather than slides and theory
Want to strengthen your embedded systems skills for professional development or technical interviews
Development Environment
We'll begin by setting up everything you need to start developing:
GNU Arm Embedded Toolchain
ST-LINK programmer
Development environment configuration
STM32F4Discovery board overview
You'll be ready to compile, flash, and debug your firmware before writing the first line of code.
Why learn from me?
I'm a Senior Embedded Systems Engineer with more than 12 years of experience developing embedded hardware and firmware for commercial products.
My experience covers the complete product development lifecycle—from PCB design and hardware bring-up to bare-metal firmware architecture, real-time embedded software, wireless communication systems, and system validation.
I created this course to teach embedded systems the way they are developed in industry: by solving real engineering problems while building a deep understanding of the underlying hardware. My goal is not only to show you how to configure STM32 peripherals, but to help you understand the reasoning behind every design decision so you can confidently apply the same techniques in your own projects.