Embedded System Design using UML State Machines

Learn to implement event-driven embedded applications using simple and hierarchical UML state machine approach
Embedded System Design using UML State Machines
File Size :
8.68 GB
Total length :
12h 13m



FastBit Embedded Brain Academy


Last update




Embedded System Design using UML State Machines

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

Embedded System Design using UML State Machines


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


Learn the fundamentals of simple and hierarchical UML state machines in easy stepsThe 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 belowyou will learn,1) UML(Unified Modeling Language) state machine semantics like simple/composite states, events, signals, transitions, entry/exit actions, guards, pseudo-states, etc2) Drawing UML state machines using graphical modeling tools such as Astah and QM™ modeling tool3) Implementing embedded applications using Hierarchical state machines and Active objects design approach4) Using QP™ real-time embedded framework and QP™-Nano Arduino library in your embedded projects5) Active objects 6) Hands-on event-driven project implementation and testing on Arduino UNO board (Please check the preview videos)Hardware:If you want to test the code developed on the target hardware, you need the below-mentioned boards and components1. 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-M2MSoftware:Installation procedure for important software are covered in this course1. 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) Mastering Microcontroller: STM32-LTDC, LCD-TFT, LVGL(MCU3)6) Embedded System Design using UML State Machines(State machine)7) Mastering RTOS: Hands-on FreeRTOS and STM32Fx with Debugging(RTOS)8) ARM Cortex M Microcontroller DMA Programming Demystified(DMA)9) STM32Fx Microcontroller Custom Bootloader Development(Bootloader)10) Embedded Linux Step by Step using Beaglebone Black(Linux)11) Linux device driver programming using Beaglebone Black(LDD1)


Section 1: Introduction

Lecture 1 About the instructor

Lecture 2 Important Note

Lecture 3 Course Repository and Slides

Lecture 4 Introduction to Finite State Machine

Lecture 5 Mealy and Moore machine

Lecture 6 Mealy and Moore State Transition Table

Lecture 7 Exercise-0001 LED control Mealy machine example

Lecture 8 Exercise-001 LED control Mealy machine implementation part 1

Lecture 9 Exercise-001 LED control Mealy machine implementation part 2

Lecture 10 Exercise-002 LED control Moore machine implementation

Section 2: UML Flat state machine and Implementation

Lecture 11 Exercise-003 Productivity Timer demo

Lecture 12 Astah UML download

Lecture 13 UML Simple and Composite states

Lecture 14 UML state machine internal state activities(entry/exit/do)

Lecture 15 UML state machine types of Transitions

Lecture 16 Events and Signals

Lecture 17 Exercise-003 States and Initial Psuedostates

Lecture 18 Exercise-003 Defining states Entry and Exit actions

Lecture 19 Exercise-003 Drawing state transitions

Lecture 20 Exercise-003 Implementing TIME_SET state

Lecture 21 Exercise-003 Implementing PAUSE state

Lecture 22 Exercise-003 Implementing STAT state

Lecture 23 Installing Microsoft VS Code and PlatformIO extension

Section 3: Flat state machine exercise implementation

Lecture 24 Exercise-003 Create new project

Lecture 25 Exercise-003 Data structure explanation

Lecture 26 Exercise-003 Defining initial transition function

Lecture 27 Different approach to implement state machine

Section 4: Nested switch technique to implement State Machine

Lecture 28 Exercise-003 Nested switch implementation of an FSM part 1

Lecture 29 Exercise-003 Nested switch implementation of an FSM part 2

Lecture 30 Exercise-003 Hardware connections

Lecture 31 Exercise-003 Implementing event producer code

Lecture 32 Exercise-003 Dispatching time tick event

Lecture 33 Button bouncing explanation

Lecture 34 Exercise-003 Button software de-bouncing implementation

Lecture 35 Adding arduino Library to project in platformIO

Lecture 36 Exercise-003 Implementing LCD functions Part 1

Lecture 37 Exercise-003 Implementing LCD functions Part 2

Lecture 38 Exercise-003 Helper function implementation

Lecture 39 Exercise-003 Implementing initial transition actions

Lecture 40 Exercise-003 Testing on hardware

Section 5: Function pointers in ‘C’

Lecture 41 Function pointers in C

Lecture 42 Passing function pointers as function arguments

Section 6: State handler technique to implement State Machine

Lecture 43 Exercise-004 Implementation using state handler approach

Section 7: State table technique to implement State Machine

Lecture 44 Exercise-004 State table approach for implementation of an FSM part-1

Lecture 45 Exercise-004 State table approach for implementation of an FSM part-2

Lecture 46 2D arrays in C

Lecture 47 Exercise-004 State table approach for implementation of an FSM part-3

Lecture 48 Exercise-004 State table approach for implementation of an FSM part-4

Section 8: UML Hierarchical State Machines and QP™ framework

Lecture 49 Hierarchical State Machines(HSMs)

Lecture 50 Run-to-completion and QP™ framework

Lecture 51 Download QP™ Nano Arduino library

Lecture 52 HSM transition execution sequence testing

Section 9: UML HSM transition execution sequences

Lecture 53 Exercise-006 Test HSM transition execution sequence on Arduino

Lecture 54 Adding files in QM tool

Lecture 55 Adding codes to files using QM tool

Lecture 56 Adding a class attribute

Lecture 57 Adding class operation

Lecture 58 Adding assertion failure callback


Lecture 60 Exercise-006 Testing

Lecture 61 Exercise-006 Testing History state

Section 10: UML HSM exercise using QM tool

Lecture 62 Exercise-007 Clock Alarm Introduction

Lecture 63 Exercise-007 Clock Alarm demo

Lecture 64 Exercise-007 States, Signals and Data structure used

Lecture 65 Exercise-007 Drawing an HSM

Lecture 66 Exercise-007 Adding main application object and constructor

Lecture 67 Atmega328p Timer peripheral explanation

Lecture 68 Atmega328p Timer registers and setup code

Lecture 69 Exercise-007 Adding class operations

Lecture 70 Exercise-007 Defining initial transition actions

Lecture 71 Exercise-007 Coding for the TICKING state

Lecture 72 Exercise-007 Adding free operations

Lecture 73 Exercise-007 Reading curr_time through class operation

Lecture 74 Exercise-007 Handling TICK event in TICKING state and testing

Lecture 75 Exercise-007 Drawing CLOCK_SETTING state

Lecture 76 Exercise-007 Implementing CLOCK_SETTING state part-1

Lecture 77 Exercise-007 Implementing CLOCK_SETTING state part-2

Lecture 78 Exercise-007 Implementing CLOCK_SETTING state part-3

Lecture 79 Exercise-007 Implementing CLOCK_SETTING state part-4

Lecture 80 Will You Write Us a Course Review?

Lecture 81 Exercise-007 Updating real time

Lecture 82 Exercise-007 ALARM_SETTING state

Lecture 83 Exercise-007 Implementing ALARM_SETTING state

Lecture 84 Exercise-007 Implementing ALARM_NOTIFY state

Section 11: Active Objects

Lecture 85 Active Objects

Lecture 86 Orthogonal state pattern

Lecture 87 Exercise-008:Implementation part 1

Lecture 88 Exercise-008:Implementation part 2

Lecture 89 Exercise-008:Implementation part 3

Lecture 90 Exercise-008:Implementation part 4

Lecture 91 Exercise-008:Implementation part 5

Lecture 92 Will You Write Us a Course Review?

Lecture 93 Exercise-008:Implementation part 6

Lecture 94 Exercise-008:Implementation part 7

Lecture 95 Exercise-008:Implementation part 8

Lecture 96 Exercise-008:Implementation part 9


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

Course Information:

Udemy | English | 12h 13m | 8.68 GB
Created by: FastBit Embedded Brain Academy

You Can See More Courses in the IT & Software >> Greetings from CourseDown.com

New Courses

Scroll to Top