Description
Course Overview
Modern embedded systems often need to perform multiple activities at the same time while responding predictably to real-time events.
Real-time operating systems (RTOS) provide the framework required to manage tasks, timing and communication within embedded firmware.
This course introduces engineers to real-time embedded systems development using FreeRTOS and demonstrates how multitasking firmware can be structured on STM32 microcontrollers.
Participants explore how tasks are scheduled, how software components communicate and how real-time systems are designed to respond reliably to external events.
The workshop focuses on practical implementation, allowing engineers to build and test multitasking firmware applications on embedded hardware.
Hands-On Embedded Development
Participants complete practical exercises using the Ratio Embedded Systems Development Kit, which includes an STM32 microcontroller development board and supporting hardware modules.
The development kit is shipped to participants prior to the course so that practical labs can be completed during the training.
Throughout the course engineers implement firmware that demonstrates:
• task scheduling
• inter-task communication
• synchronisation techniques
• time-based events
• multitasking embedded applications.
This hands-on approach allows participants to understand how real-time systems behave when interacting with real microcontroller hardware.
Course Topics
Introduction to Real-Time Embedded Systems
• real-time system concepts
• deterministic system behaviour
• cooperative vs pre-emptive scheduling
• architecture of real-time embedded systems.
FreeRTOS Architecture
• FreeRTOS kernel overview
• task creation and lifecycle
• priorities and scheduling
• system tick and timing.
Task Management
• creating and managing tasks
• stack management
• task priorities
• cooperative and pre-emptive scheduling.
Inter-Task Communication
• queues and message passing
• data sharing between tasks
• designing task communication patterns.
Synchronisation Techniques
• semaphores
• mutexes
• critical sections
• preventing race conditions.
Timers and Time-Based Events
• software timers
• periodic tasks
• event-driven firmware.
Designing Multitasking Embedded Systems
• structuring RTOS-based firmware
• designing maintainable embedded systems
• debugging multitasking firmware.
Who Should Attend
This course is designed for engineers developing firmware for microcontroller-based systems.
Typical participants include:
• embedded software engineers
• firmware developers
• engineers working with ARM Cortex-M microcontrollers
• developers building real-time embedded systems.
Requirements
Participants should have experience with the C programming language and basic familiarity with microcontroller development.
Previous experience with real-time operating systems is not required.
Instructor Experience
This course is delivered by an experienced embedded systems engineer with extensive industry experience developing firmware for microcontroller-based systems.
The instructor has worked on real embedded projects involving multitasking firmware, RTOS-based systems and ARM Cortex-M platforms.
Participants benefit from practical insights into how real-time operating systems are used in production embedded systems.
Private Team Training
This course is also available as private training for engineering teams.
Private delivery allows the workshop to be adapted to the embedded platforms and development environments used within your organisation.
This format works particularly well for teams developing embedded products who want engineers to work through the labs together.
Private training is available for teams of four or more engineers.
Course Duration
3 Days – Live Virtual Instructor-Led Training
Participants interact directly with the instructor while completing practical firmware exercises.
Hardware Development Kit
Participants complete the practical exercises using the Ratio Embedded Systems Development Kit, which includes:
• STM32 microcontroller development board
• sensors and interface modules
• display module
• embedded development tools.
The development kit is shipped before the course and remains with participants after the training so they can continue experimenting with embedded development.
Client Feedback
Feedback from engineers who have attended our embedded systems training highlights the practical and hands-on nature of the workshops.
Participants particularly value the opportunity to work directly with real microcontroller hardware while exploring firmware development techniques that can be applied immediately in their own projects.
Typical feedback from attendees includes:
• “Excellent practical course with real embedded development examples.”
• “The instructor explained complex concepts clearly and related everything to real firmware development.”
• “Very useful for understanding how to structure embedded software projects.”
• “The hands-on exercises made the learning much easier to apply.”
Part of the Embedded Systems Development Learning Path
This course forms part of the Embedded Systems Development learning path, designed to take engineers from low-level firmware development through to modern C++ embedded system design.
1. STM32 Embedded C Programming – Developing Firmware for ARM Cortex-M Microcontrollers (3 Days)
Building a strong foundation in embedded firmware development using C.
Covers microcontroller architecture, peripherals, interrupts, and hardware interaction.
2. Real-Time Embedded Systems with FreeRTOS for STM32 Developers (3 Days)
Introducing real-time operating systems for embedded applications.
Learn task scheduling, inter-task communication, timing constraints, and building reliable RTOS-based systems.
3. Embedded C++ Programming for Microcontrollers (3 Days)
Applying modern C++ techniques to embedded systems development.
Focuses on safer abstractions, reusable components, object-oriented design, and building scalable embedded software.

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.
Frequently Asked Questions (FAQs)
What is the primary focus of the STM32 embedded systems course?
The course concentrates on the practical techniques for developing embedded firmware for STM32 microcontrollers, utilizing C language to interact with hardware, configure peripherals, and create real-world firmware solutions.
Who benefits most from enrolling in this embedded systems training?
This training is best suited for embedded software engineers, firmware developers, electronics engineers, and individuals transitioning into embedded development who possess basic C programming skills.
Which practical skills will participants acquire in this course?
Participants will gain knowledge about STM32 architecture, peripheral configuration, memory management, interrupt-driven programming, communication interfaces, and how to develop maintainable firmware through hands-on exercises.
What hardware will participants use during the training session?
Each participant will be provided with an STM32 development board prior to the course, which they will utilize to interact with hardware peripherals and complete various practical exercises.
What are the prerequisites for attending this embedded systems course?
Attendees should have basic experience in the C programming language and an understanding of general programming concepts to maximize the benefits of this training.







