Description
Who Should Attend
This course is designed for engineers working with embedded systems and microcontrollers, including:
• Embedded Software Engineers
• Firmware Developers
• Systems Engineers working with STM32 platforms
• Engineers developing real-time or connected devices
• Technical Leads and Senior Engineers
Prerequisites
Participants should have:
• experience with embedded C or C++ programming
• familiarity with microcontrollers and basic electronics concepts
Experience with RTOS or networking is beneficial but not required.
Learning Objectives
By the end of this course, participants will be able to:
• understand the ARM Cortex-M architecture and STM32 system design
• configure and use interrupts, DMA, and power management features
• develop embedded applications using STM32Cube or Standard Peripheral Libraries
• design and implement real-time systems using FreeRTOS
• develop and debug multi-tasking applications
• implement networking using the LwIP TCP/IP stack (UDP/TCP)
• configure Ethernet communication on STM32 platforms
• optionally develop graphical user interfaces using EmWin or TouchGFX
Course Content
Day 1 – Cortex-M and STM32 Architecture
Participants begin by understanding the core architecture of STM32 microcontrollers.
Topics typically include:
• ARM Cortex-M architecture (v7-M, Harvard architecture, memory hierarchy)
• registers, privilege levels, and system control block
• SysTick timer and system timing
• exception and interrupt mechanisms
• NVIC configuration and priority handling
• fault handling and debugging interfaces
• CMSIS library usage
Practical exercises:
• debugging and exception handling
• MPU configuration
STM32F4 Architecture Overview
Topics typically include:
• system-on-chip architecture and memory organisation
• DMA controller and bus matrix
• flash interface and real-time accelerators
• boot configuration
Practical exercise:
• flash programming
Day 2 – Power, Clocking, and Peripheral Management
Participants explore how STM32 devices manage power and peripherals.
Reset, Power, and Clocking
Topics typically include:
• reset sources and bootloader behaviour
• clock sources and PLL configuration
• power modes and optimisation
Practical exercise:
• configuring low-power modes and measuring power consumption
DMA and Peripheral Programming
Topics typically include:
• DMA architecture, FIFO, and double buffer mode
• GPIO and ADC configuration
• external interrupts
Practical exercise:
• using DMA to transfer data between peripherals
Day 3 – FreeRTOS Foundations
Participants begin working with real-time operating system concepts.
FreeRTOS Overview
Topics typically include:
• FreeRTOS architecture and scheduling
• task creation and management
• preemption and task switching
• kernel structures and hooks
• tracing and debugging using tools such as Tracealyzer
Practical exercise:
• task creation and debugging context switches
Memory Management in FreeRTOS
Topics typically include:
• heap management strategies
• stack usage and monitoring
• memory allocation techniques
Practical exercises:
• stack overflow detection
• heap debugging
Day 4 – FreeRTOS Synchronisation and Interrupts
Participants develop advanced multi-tasking and synchronisation techniques.
Inter-Task Communication
Topics typically include:
• queues and message passing
• blocking and non-blocking communication
Practical exercise:
• synchronising tasks using message queues
Resource Management
Topics typically include:
• mutexes and priority inheritance
• deadlock detection and avoidance
Practical exercises:
• reader-writer problem
• producer-consumer implementation
Interrupt Management
Topics typically include:
• interrupt handling in RTOS environments
• ISR-safe communication mechanisms
• binary semaphores
Practical exercise:
• synchronising interrupts with tasks
Day 5 – Advanced FreeRTOS and Networking with LwIP
Participants integrate real-time systems with network communication.
FreeRTOS Advanced Features
Topics typically include:
• software timers and timer daemon tasks
• one-shot and auto-reload timers
• FreeRTOS MPU concepts
Practical exercise:
• timer-based event handling
STM32 Ethernet and LwIP TCP/IP Stack
Topics typically include:
• Ethernet MAC architecture and buffer descriptors
• LwIP architecture and memory management
• networking APIs (Netconn and BSD sockets)
• UDP and TCP communication
Practical exercises:
• running an HTTP server
• implementing a TCP echo client/server
Optional GUI Modules
Course customisation can include graphical interface development.
Topics include:
• EmWin GUI stack (widgets, event handling, UI design)
• TouchGFX framework for advanced UI development
Practical exercises:
• creating a touch-based interface
• deploying a UI application using CubeMX and FreeRTOS
Delivery Approach
This is a deep, hands-on embedded systems programme designed to build real engineering capability.
It includes:
• instructor-led technical sessions
• extensive practical exercises using STM32 hardware
• real-world embedded scenarios
• progressive system development across the course
Duration
5 Days
Delivery Options
This course can be delivered as:
• a public scheduled course
• a private team programme
• virtual delivery (hardware-dependent)
• on-site classroom training
Outcomes
After completing this course, participants will be able to:
• design and develop real-time embedded systems on STM32
• implement multi-tasking applications using FreeRTOS
• configure and optimise peripherals, DMA, and interrupts
• build network-enabled embedded systems using LwIP
• debug and optimise embedded applications
• optionally develop graphical user interfaces for embedded devices
Additional Notes
This programme is particularly valuable for teams developing connected devices, industrial systems, and embedded platforms, where reliability, performance, and scalability are critical.
It also provides a strong foundation for progression into:
• advanced embedded systems and RTOS design
• IoT and edge device development
• high-performance firmware engineering
Participants will work directly with STM32-based hardware and real system components, ensuring the learning is immediately applicable in production environments.
Senior Software Architect & Development Instructor
Microsoft MVP | 30+ Years Engineering Experience
This course is presented by Peter
Peter brings more than 30 years of experience in software architecture, development, and technical training, helping engineering teams design, modernise, and improve complex systems across enterprise, cloud, embedded, and data-driven environments.
He has been exploring the role of AI in software engineering since the early wave of modern AI tooling, focusing on how development teams can use AI productively while maintaining strong engineering standards, governance, and architectural discipline.
Alongside his engineering background, Peter has a Master’s level background in Mathematics and is currently working towards a PhD, bringing deep analytical insight into how AI systems behave and how engineers should evaluate and integrate them responsibly.




