Modern Bare-Metal Embedded C++ Programming from Ground Up™
No Libraries used, Embedded C++, ARM Cortex, ADC,UART,TIMERS, GPIO,SPI,I2C, Template Programming etc.
Welcome to the Modern Embedded C++ Bare Metal course.
This is a practical programming course on embedded systems programming using the C++ programming language. Key features of C++ such as template programming and object-oriented programming can greatly improve embedded software portability, in recent years this has made C++ very attractive to embedded developers.
The goal of this course is to teach you how to navigate the microcontroller reference manual and datasheet to extract the right information to professionally build peripheral drivers and firmware. To achieve this goal, no libraries are used in this course, purely bare-metal Embedded-C++ and register manipulations.
By the end of this course you will be able write drivers for peripherals like ADC, UART, PWM, GPIO, TIMER,I2C, SPI, etc. You will also master the ARM architecture and how to build professional embedded firmware for ARM processors.
Furthermore, you will master C++ key features like Object-Oriented methods, Template Programming, and optimization.
Frequently Asked Questions
Course Curriculum
-
StartConfiguring our UART driver for displaying results (Part I) (43:23)
-
StartConfiguring our UART driver for displaying results (Part II) (26:44)
-
StartUnderstanding Classes and Objects (10:18)
-
StartDynamic Allocation (13:32)
-
StartVariable References (7:16)
-
StartUnderstanding Function Templates (10:58)
-
StartUsing Default Arguments (3:11)
-
StartUnderstanding Pass by Reference and Pass by Value (5:32)
-
StartUnderstanding Pass by Address (1:33)
-
StartReturn by Address (6:11)
-
StartClass Property Functions (9:15)
-
StartClass Constructors (7:04)
-
StartUnderstanding Scope Resolution (10:38)
-
StartUnderstanding "this" Pointer (5:03)
-
StartDifferences between Class and Struct (3:59)
-
StartThe function "friend" (7:04)
-
StartClass Inheritance (10:57)
-
StartUnderstanding Access Specifiers (7:37)
-
StartClass Pointers (9:37)
-
StartFunction Overriding (5:51)
-
StartVirtual Functions (5:36)
-
StartPolymorphism (Part I) (8:46)
-
StartPolymorphism (Part II) (2:26)
-
StartThe class "friend" (7:36)
-
StartStatic Variables (4:45)
-
StartStatic Functions (2:08)
-
StartClass Template (14:34)
-
StartUnderstanding namespaces (5:26)
-
StartClass Deconstructors (7:13)
-
StartClass virtual deconstructors (6:03)
-
StartIntroduction to Microcontroller Template Programming (21:24)
-
StartDeveloping a Template for accessing Microcontroller Registers (Version 1) (50:21)
-
StartDeveloping a Template for accessing Microcontroller Registers (Version 2) (12:51)
-
StartRegister Bit-mapping (Part I) (7:09)
-
StartRegister Bit-mapping (Part II) (5:35)
-
StartApplying Register Bit-mapping to Register Access Class Template (10:12)
-
StartDeveloping a Microcontroller Port Class Template (30:12)
Your Instructor
EmbeddedExpertIO is a community focused on professional embedded systems software programming.
Everyday we try to find the knowledge gaps that exist among current embedded systems developers, then put our minds and years of experience together to create a course to perfectly fill such gaps.
If you are new to embedded systems programming our community provides step-by-step courses that will take you from blinky to build your own rtos .
If you are an embedded systems developer who wants to specialize in some specific aspect of embedded systems programming, we also provide a wide range of specialization courses to help you master different aspects of embedded firmware development.
We look forward to welcoming you to EmbeddedExpertIO