Embedded Systems Object-Oriented Programming in C (Udemy.com)
End-to-End Firmware and Driver Development: UART,GPIO,TIMER, etc. From Datasheet to Embedded C and C++
Created by: Israel Gbati
Last updated February 2023
What you will learn
- Apply Objected-Oriented Principles to Firmware development
- Write Objected-Oriented Embedded-C Applications
- Write Objected-Oriented Embedded-C++ Applications
- Write Embedded Systems Drivers and Libraries using Objected Oriented C and C++
- Write firmware by applying Object-Oriented principles like Polymorphism, Inheritance and Encapsulation in C and C++
- Write embedded drivers from scratch in C++ using information from the datasheet. E.g. GPIO drivers, TIMERS drivers, UART drivers etc.
- Write embedded drivers from scratch in object-oriented C using information from the datasheet. E.g. GPIO drivers, TIMERS drivers, UART drivers etc.
- Build every single line of code from scratch by writing to the microcontroller’s memory space directly.
- Use No third party libraries or header files
- Understand and write every single line of code yourself- no Copy/Paste
How it compares
Against the other 295 rated Udemy courses in Arduino on CourseDuck:
- Rating4.1 out of 5higher than 19% of them
- Reviews449#72 of 296 by number of reviews
- Length12.4 hourslonger than 86% of them
- Last updatedFebruary 2023earlier than 53% of them
Course Description
Are you tired of Copying and Pasting code you don't understand?
This course is for anyone seeking to improve their embedded firmware development skills. This course focuses on how to apply object-oriented principles to embedded firmware development.
By the end of this course you will be able to write Objected-Oriented Embedded-C Applications as well as Objected-Oriented Embedded-C++ Applications.
So with that understood, let me tell you…
Exactly What You’re Getting
This is dramatically different from any course you have ever taken because it’s more of a professional hands-on “field guide” to stm32 bare metal firmware development.
The reason why is because there’s no fluff or filler. It immediately gets down to the actual subject, showing you exactly what to do, how to do it, and why.
Plus, it’s easy.
And you’ll immediately “get” the entire mythology I personally use to build firmware for consumer devices in my professional life.
It's About MORE Than Just Getting the Code to Work
See, this course will change your professional life forever. Here is what one student had to say about the 1st version (STM32F4) of the course :
"So far this class has been awesome. I'm a C programmer that's been using Python a lot lately so this class helps to make my C code look a little more object oriented and class based. Also, he goes through how to transform some C code into C++ code which is pretty great"
Here is what another student had to say :
"Absolutely it was a good match for me because I am new to the OOP in Embedded system and I have now gained good Understanding of C++ and OOP for Microcontrollers. Very detailed and nicely designed course I will regularly check for the new update. I think it is the best course about OOP on Embedded system."
If at least one of the following applies to you then keep reading if not then simply skip this course:
" Escape From "
Copying/Pasting code you don’t understand
Using third party libraries and header files like HAL, LL and StdPeriph
Experiencing bugs you don’t understand
Being afraid of technical documentations like the reference manual and datasheet of the chip
Imposter syndrome
" Arrive At "
Building every single line of code from scratch by writing to the microcontroller’s memory space directly.
Using No third party libraries or header files
Understanding and writing every single line of code yourself- no Copy/Paste
Using the debugger effectively to analyze and resolve any bugs
Developing proficiency in your embedded development skills and confidently take the next steps
So like I said, there’s more than just getting each piece of code to work.
Here’s an overview of what you’re getting...
Analyzing the chip documentations:
Before developing the firmware for any chip you have to learn how to read the documentation provided by the chip manufacturer.
Defining Peripheral address
All components on the microcontroller have an address range. To write to a component or read from a component you need to locate its address range in the documentation and properly define the addresses in your code.
Creating registers from the address:
The addresses in the address range of a component represent the registers of that component. To access these registers you have effectively typecast the addresses.
Understanding CMSIS:
Cortex-Microcontroller Interface Standard (CMSIS)CMSIS is a standard developed by Arm for all Cortex-Microcontrollers. This is the standard used in professional firmware development
But it gets better because you’re also getting…
Deep Lessons on Object-Oriented Concepts
Like:
Polymorphism
Inheritance
Encapsulation
Specially Designed For People Who Hate Copy/Paste
Listen. If you don’t like “Copy/Paste” you’re not alone. I can’t stand it either. I’d literally rather have a piece of code that I wrote from scratch that doesn’t work than someone else’s working code I copied and pasted.
And that’s why I’ve spent months designing and recording this course in which I show you how to locate every single register used and the meaning of every hexadecimal value written into the register.
Also it comes with a money back guarantee so you have nothing to loose.
Instructor Details
- 4.1 Rating
449 Reviews
Israel Gbati
Author of Bare-Metal Embedded C Programming: Develop High-Performance Embedded Systems with C for Arm Microcontrollers.
With extensive experience in embedded firmware development, I specialize in real-time systems, low-level programming, medical device architecture, embedded signal processing, and embedded AI. My professional journey has been centered around Arm Cortex-Microcontrollers, delivering robust solutions used in cutting-edge industries.
Passionate about simplifying complex concepts.
More courses by Israel Gbati
Embedded Systems Bare-Metal Programming Ground Up™ (STM32) (2023)
4.6 (3,916 Reviews)
Provider: Udemy
Time: 24.6h
$99.99
x86 Assembly Language Programming From Ground Up™ (2025)
4.6 (1,715 Reviews)
Provider: Udemy
Time: 14.1h
$10.99
Build Your Own RealTime OS (RTOS) From Ground Up™ on ARM 1 (2023)
4.3 (1,180 Reviews)
Provider: Udemy
Time: 9.3h
$74.99
FreeRTOS From Ground Up™ on ARM Processors (REVISED) (2023)
4.4 (994 Reviews)
Provider: Udemy
Time: 23.5h
$69.99
Introduction to ARM Cortex-M Assembly Programming (FREE) (2020)
4.4 (967 Reviews)
Provider: Udemy
Time: 4.2h
Free
ARM Cortex-M : Modular Embedded Systems Design (FREE!) (2019)
4.5 (935 Reviews)
Provider: Udemy
Time: 7.6h
Free
More Arduino courses
Learn to Build a Computer (PC) in 2026 - all types!
4.9 (245 Reviews)
Provider: Udemy
Time: 6.1h
$74.99
Raspberry Pi For Beginners - 2026 Complete Course
4.8 (3,105 Reviews)
Provider: Udemy
Time: 10.6h
$89.99
Ultimate Guide to Raspberry Pi : Tips, Tricks and Hacks (2023)
4.8 (2,363 Reviews)
Provider: Udemy
Time: 5.2h
$69.99
Mastering Microcontroller: STM32-LTDC, LCD-TFT, LVGL (MCU3) (2026)
4.8 (487 Reviews)
Provider: Udemy
Time: 8.1h
$79.99
Arduino Step by Step: Getting Started (2024)
4.7 (8,714 Reviews)
Provider: Udemy
Time: 21.4h
$159.99
Reviews
By Wojciech Kuchcik on 10/19/2025
He's doing interesting stuff, tho he's often repeating explanations of simple stuff, which is slowing down the whole learning process. I have speed set at x1.25, and yet sometimes i'm upping it to x2 or even still skipping some obvious or repetitive parts. Tho lots of ideas there are actually pretty interesting.
By PhD Researcher AI & Robotics Scientist F on 4/27/2024
Actually, not every family of stm32f4xx is supported by ukeil vision, but instructor is neither explaining detail configuration of ukeilvision, though it is using this community throught the course. Personally, i can not take benefits from this course, due to lack of configuration and explanation.
By Eduard Ribar on 9/6/2023
Good for beginners, as an experienced Embedded C programmer I expected to learn more about C++ in embedded. The example of transformation of a C module into a C++ class was very useful, but I was missing an examples of usage of the C++ Interface class in an embedded project.
By Phil Kasiecki on 4/7/2023
All in all, this was well-done. I especially like how developing these drivers and libraries in C, then C++, showed how much easier C++ makes a lot of this. C will still loom very large in the embedded software realm, but C++ is becoming a better option all the time and this helps illustrate why and hopefully will not only help developers learn how to use it for such tasks, but also see that doing so is viable.
By Rafaela Thaís Ferreira de Freitas on 1/15/2023
Its a good course. I couldn't do the classes using Keil (ARM Compiler 5 was missing and I did not want to go back to an older version of Keil) but the classes worked fine (minus the Developing a UART Driver for monitoring results). I guess it could explain a little bit more about C++ but I understand that this ins't the course focuses.
By Rodrigo Garbi on 10/17/2021
The course is OK. It started very well with the concepts of OOP used in C language, and although it missed some pointer to functions in the data structure to better emulate the class concept behaviour, it was very interesting. The C to C++ transformation method explained in the course is very useful to contrast/compare C and C++. But then, the concepts of C++ explained are very basic. Finally, the course is very low level oriented, and that is great for someone who doesn't have much experience with processors, but I, personally, would have liked to see more C++ development, with virtual classes, inherited classes, maybe a bit of templates, all applied to an embedded system. Overall, the course is good, but be aware it won't teach much about C++
By Peter Bergström on 4/10/2021
I found this course very stimulating. I had some experience in C programming before, but not much in C++. In general I think this course is a good one, to at least start using C++ in embedded systems. (I am fully aware that we just touching a tiny bit if what C++ can do).
By Jaak Jensen on 1/3/2021
Not an entry level course. Definitely requires per-requisites from Fast Bit Brain's Embedded Driver Development course or Israel's Bare Metal Embedded Course. If you have those under your belt, this course is FANTASTIC and will help you write much more readable object-oriented code.
By Sunil Chouhan on 8/15/2020
Absolutely it was a good match for me because I am new to the OOP in Embedded system and I have now gained good Understanding of C++ and OOP for Microcontrollers. Very detailed and nicely designed course I will regularly check for the new update. I think it is the best course about OOP on Embedded system.
By Shane Mattner on 1/31/2020
So far this class has been awesome. I'm a C programmer that's been using Python a lot lately so this class helps to make my C code look a little more object oriented and class based. Also, he goes through how to transform some C code into C++ code which is pretty great
Quality Score
No CourseDuck member has rated this course yet. Taken it? Give each part a thumbs up or down.
Overall Score : 82 / 100












