Embedded System Design using UML State Machines


Learn to implement event-driven embedded applications using simple and hierarchical UML state machine approach

What you’ll learn

  • Event driven programming paradigm
  • Flat and hierarchical state machines (Simple FSMs and H-FSMs)
  • UML state machine semantics and state chart drawing
  • Converting UML statecharts into executable C/C++ code
  • Action objects design approach
  • Different state machine implementation strategies
  • Nested switch implementation of state machines
  • State table approach to implementing the state machines
  • State-Handler approach to implementing the state machines
  • Usage of function pointers in ‘C’
  • Hands-on projects using simple FSM and HSMs
  • Step by step code development
  • Graphically modeling event-driven embedded application using UML statecharts modeler tools
  • Working with QP™ embedded real-time framework and QM™ tool of Quantum Leaps, LLC to draw and implement the HSMs


  • Basics of ‘C’ or ‘C++’ programming



The course emphasizes project-based learning, learning by doing.

The goal of this course is to introduce an event-driven programming paradigm using simple and hierarchical state machines.

After going through this course, you will be trained to apply the state machine approach to solve your complex embedded systems projects.

Some of the highlights of this course are as below

you will learn,

1) UML(Unified Modeling Language) state machine semantics like simple/composite states, events, signals, transitions, entry/exit actions, guards, pseudo-states, etc

2) Drawing UML state machines using graphical modeling tools such as Astah and QM™ modeling tool

3) Implementing embedded applications using Hierarchical state machines and Active objects design approach

4) Using QP™ real-time embedded framework and QP™-Nano Arduino library in your embedded projects

5) Active objects

6) Hands-on event-driven project implementation and testing on Arduino UNO board (Please check the preview videos)


If you want to test the code developed on the target hardware, you need the below-mentioned boards and components

1. Arduino UNO(1)

2. 16×2 character LCD (1)

3. Pushbuttons (3)

4. 10KΩ resistors (3)

5 . 220Ω resistor (3)

6. 100KΩ Potentiometer (1)

7. Arduino buzzer (1)

8. Jumper wires-M2M


Installation procedure for important software are covered in this course

1. Arduino IDE (Free and Open source )

2. Microsoft visual code (Free)

3. PlatformIO VS code extension(Free and Open source )

4. QM™ modeling tool by Quantum Leaps, LLC (Free GPL version)

5. Astah by Change Vision, Inc.(Trial version)

Learning order of FastBit Embedded Brain Academy Courses,

If you are a beginner in the field of embedded systems, then you can take our courses in the below-mentioned order.
This is just a recommendation from the instructor for beginners.

1) Microcontroller Embedded C Programming: absolute beginners(Embedded C)

2) Embedded Systems Programming on ARM Cortex-M3/M4 Processor(ARM Cortex M4 Processor specific)

3) Mastering Microcontroller with Embedded Driver Development(MCU1)

4) Mastering Microcontroller: TIMERS, PWM, CAN, RTC,LOW POWER(MCU2)

5) Embedded System Design using UML State Machines(State machine)

6) Mastering RTOS: Hands-on FreeRTOS and STM32Fx with Debugging(RTOS)

7) ARM Cortex M Microcontroller DMA Programming Demystified(DMA)

8) STM32Fx Microcontroller Custom Bootloader Development(Bootloader)

9) Embedded Linux Step by Step using Beaglebone Black(Linux)

10) Linux device driver programming using Beaglebone Black(LDD1)

Who this course is for:

  • Anyone who wants to learn and explore embedded system programming
  • Students and working professionals

Created by FastBit Embedded Brain Academy, Kiran Nayak
Last updated 2/2022

Size: 6.54 GB



Leave A Reply

Your email address will not be published.