EmbeddedExpertIO
Need Help? Contact us at:
support@embeddedexpert.io
 Are you tired of  Copying and Pasting code you don't understand?
Preview #1
Lesson : Configuring Pins using the Registers we Created
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.
Preview #2
Lesson : Writing a General Purpose Input/Output (Driver) to read Pins
We shall develop the driver using the 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.
Join

The most Popular Bare-Metal C Training Online

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 configure microcontroller peripherals like ADC, UART,PWM, GPIO, TIMER,I2C, SPI, DMA, etc. You will also master the ARM architecture and how to build professional embedded firmware for ARM processors.

Modern Bare-Metal Embedded-C  From Ground Up

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 course :
Here is what another student had to say :
A third student :
And a fourth :
 In fact, this same course is currently being ...

Taken by 5000+ Students with 1000+ Reviews

If you find this hard to believe email me at support@embeddedexpert.io and I will send you all 1000+ reviews

" Escape From "

  • Copying/Pasting code you don’t understand
  • Using third party libraries and header files                like HAL, LL and StdPeiph
  • Experiencing bugs you don’t understand
  • ​Being afraid of technical documentations                  like the reference manual and datasheet of               the chip
  • ​Imposter syndrome

" Arrive At "

  • 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
  • ​Use the debugger effectively to analyze                       and  resolve any bugs
  • ​Develop 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 address for the different peripheral:
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 Developing Peripheral Drivers

You will learn how to develop bare-metal drivers for the following peripherals :
  • Analog-to-Digital Converter (ADC)
  • ​Serial Peripheral Interface (SPI)
  • ​Inter-Integrated Circuit (I2C)
  • ​Direct Memory Access (DMA)
  • ​Nested Vector Interrupt Controller (NVIC)
  • ​General Purpose Timers (TIM)
  • ​System Tick Timer (SysTick)
  • ​General Purpose Input/Output (GPIO)

You're getting both the 1st and 2nd Edition ...

Table of Content (2nd Edition) 

  • ​Getting Started
  • ​Downloading our Integrated Development Environment (IDE)
  • ​Installing our Integrated Development Environment (IDE)
  • ​Getting the right Documentation for Bare-Metal Development
  • ​Coding : Locating the Ports and Pins of Components on the Nucleo board
  • ​Coding : Defining Addresses of Modules using information from the Documentation
  • ​Coding : Creating required Registers using Information from Documentation
  • ​Coding : Configuring Pins using the Registers we Created
  • ​Coding : Creating Registers from Structure Members
  • ​General Purpose Input/Output Driver Development
  • ​​Overview of ARM Cortex-M General Purpose Input/Output Module
  • ​Coding : Developing a GPIO Output Driver
  • ​Coding : Developing a GPIO Input Driver
  • ​Universal Asynchronous-Synchronous Receiver-Transmitter (USART)
  • ​Overview of the UART Protocol
  • ​Coding : Developing a UART Transmitter
  • ​Coding : Developing a UART Receiver
  • Coding : Retargeting printf
  • ​General Purpose Timer Driver Development
  • ​Understanding the System Tick (SysTick) Timer
  • ​Coding : Configuring Systick
  • ​Understanding STM32 Timers
  • ​Coding : Creating timer delays
  • ​Coding : Timer output compare
  • ​Coding : Timer Input Capture
  • ​Analog-to-Digital Converters Driver Development
  • ​Understanding ADC Independents Modes
  • ​Coding : ADC basic driver
  • ​Coding : Transmitting ADC values through the UART
  • Interrupt Programming
  • ​Understanding Interrupts
  • ​Coding  : Developing the GPIO Interrupt Driver
  • ​Coding  : Testing the GPIO Interrupt Driver
  • ​Coding : Developing the UART Receiver Interrupt Driver
  • ​Coding : Developing the ADC Interrupt Driver
  • ​Coding : Developing the Systick Interrupt Driver
  • ​Coding : Developing the Timer Interrupt Driver
  • ​Direct Memory Access (DMA) Driver Development
  • ​Coding : Overview of the Direct Memory Access (DMA) Module
  • ​Coding : Developing the UART Transmitter DMA Driver Pt.1
  • ​Coding : Developing the UART Transmitter DMA Driver Pt.2
  • ​Coding : Testing the UART Transmitter DMA Driver
  • ​Inter-Integrated Circuit (I2C)
  • ​Introduction to I2C
  • ​Coding : Implementing the I2C Init function
  • ​Coding : Implementing the I2C Byte Read function
  • ​Coding : Implementing the I2C Burst Read function
  • ​Coding : Implementing the I2C Burst Write function
  • ​Coding : Configuring the ADXL345 Accelerometer using the I2C driver
  • ​Coding : Testing the ADXL345 Accelerometer using the I2C driver
  • ​Serial Peripheral Interface (SPI)
  • ​Introduction to Serial Peripheral Interface (SPI)
  • ​Coding : Implementing the SPI GPIO Initialization function
  • ​Coding : Configuring the SPI Parameters
  • ​Coding : Implementing the SPI Transmit
  • ​Coding : Implementing the SPI Receive
  • ​Coding : Configuring the ADXL345 Accelerometer using the SPI Driver
  • ​Coding : Testing our ADXL345 Driver

 Table of Content (1st Edition)

  •  Setting Up Keil uVision 5
  • ​Download Keil uVision 5
  • ​Installing Keil uVision 5
  • ​Installing Packs
  • ​Changing the Compiler
  • ​Setting Up Option 2 - STM32CubeIDE
  • ​Download CubeIDE
  • ​Setting Up STM32CubeIDE
  • ​Installing Packages
  • ​Overview
  • ​Writing Bare-Metal C Code with STM32CubeIDE
  • ​​Coding : Writing a GPIO Driver from Scratch (PART I)
  • ​Coding : Writing a GPIO Driver from Scratch (PART II)
  • ​General Purpose Input/Output(GPIO)
  • ​Overview of ARM Cortex-M General Purpose Input/Output Module
  • ​Coding : Developing GPIO Driver Using Information from the Datasheet
  • ​Coding : Controlling GPIO using the BSRR Register
  • ​Coding : Reading GPIO Inputs
  • ​Interrupts Programming
  • ​Introduction to Interrupts
  • ​Understanding External Interrupts
  • ​Coding : Developing the GPIO Interrupt Driver
  • ​Coding : Working with Multiple GPIO Interrupts
  • ​Coding : Developing the UART Interrupt Driver
  • ​Coding : Developing the System Tick Interrupt Driver
  • ​Coding : Developing the General Purpose Timer Interrupt Driver
  • ​Interfacing with a Liquid Crystal Display (LCD)
  • ​Coding : Developing the Liquid Crystal Display (LCD) Driver
  • ​Coding : Configuring the Liquid Crystal Display for 4-bit Data Mode
  • ​Inter-Integrated Circuit (I2C)
  • ​Introduction to I2C
  • ​Analyzing the DS1307 Realtime Clock
  • ​Coding : Developing an I2C Driver
  • ​Universal Asynchronous Receiver-Transmitter(UART) 
  • ​Coding : Developing the UART Driver Using Information from the Datasheet
  • ​Overview of the UART Protocol
  • Further discussion on UART Alternate Function configuration
  • ​Coding : Receiving Data with the UART
  • ​Coding : Two-way UART Communication
  • ​System Tick and General Purpose Timers
  • ​Overview of the System Tick Timer
  • ​Overview of General Purpose Timers
  • ​Coding : Developing the System Tick Timer Driver
  • ​Further discussion on System Tick Registers
  • ​Coding : Creating a Delay Function using the System Tick Timer
  • ​Coding : Developing the General Purpose Timer (GPTM) Driver
  • ​Coding : Configuring the General Purpose Timer for Output Compare
  • ​Coding : Configuring the General Purpose Timer for Input Capture
  • ​Coding : Input capture frequency measurement
  • ​Coding : Configuring the General Purpose Timer for PWM Output
  • ​Analog -to- Digital Converter (ADC) Driver Development
  • ​Introduction to Analog to Digital Conversion
  • ​Coding : Developing the ADC Driver
  • ​Coding :Reading the CPU Temperature with the ADC and Displaying it with the UART
  • ​Serial Peripheral Interface (SPI)
  • ​Introduction to Serial Peripheral Interface (SPI)
  • ​Coding : Developing a Simple SPI Driver
  • ​Coding : Developing an SPI Driver for the ST7735 Graphics LCD (Part I)
  • ​Coding : Developing an SPI Driver for the ST7735 Graphics LCD (Part II)
  • ​Coding : Developing an SPI Driver for the ST7735 Graphics LCD (Part III)
  • ​Coding : Developing an SPI Driver for the ST7735 Graphics LCD (Part IV)

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. 
Although the course explains every single line of code .... you will also get

Access to the EmbeddedExpertIO Forum

where you can ask questions and discuss embedded systems topics.
In fact, I will be throwing in...

Two Important Bonuses 

Just to make sure I did everything to persuade you try this mazing course which already comes with a money back guarantee.


 Bonus #1

STM32L0 Bare-Metal Peripheral Drivers Development

Develop bare-metal drivers and firmware for the STM32L0 low power microcontroller which comes with an Arm Cortex-M0+ chip.


 Bonus #2

Mini-Cookbook : STM32 Peripheral Assembly Programming 

This is a mini-cookbook providing step-by-step instructions for writing  peripheral drivers in assembly for the stm32f4 family of microcontrollers.


Lifetime Access

Join once, own it forever. Login anytime and study at your own pace.

Time Is Of The Essence 

In most cases, I take a loss when selling the course at this price.

It costs me just over $17 in advertising expense to sell one course.
So why would I do that ?
Simple. I’m making this offer with the idea that you’ll be very impressed with what I’m giving you today, you’ll want to learn more from me in the future.

Don’t worry - I don’t have a sales team that will call you and bother you or anything like that.

It’s actually the opposite. I’m betting that you’ll enjoy the course so much, you’ll call me.

Anyway - with all that said, this is a limited offer.

And by the way, even though this ridiculously cheap- you’re still protected by …


The Boldest Guarantee in The World
 

I 100% guarantee you’ll love this course and the bonus course + mini-cookbook. I will return your $29.78 and let you keep the mini-cookbook anyway. Just email me or call the number on your receipt and I’ll give you back your $29.78 with no questions asked.

That's right.

How’s that for fair ?

This Is Truly A Limited Offer So Claim Your Spot Now Before They’re All Gone

Thanks for taking the time to read this letter and I look forward to hearing from you soon!

Israel Gbati
Here's a recap of

EVERYTHING You'll Get

When You Purchase This AMAZING Offer!

  •   Modern Bare-Metal Embedded-C  ($49.99 Value)
  • Duration:  24+  hours
  • Resources: Video + Complete source code
  •   STM32L0 Bare-Metal Peripheral Drivers Development  ($39.99 Value)
  • Duration:  7  hours
  • Resources: Video + Complete source code
  •   Mini-Cookbook : STM32 Peripheral Assembly Programming  (Not for Sale)
Total Value: $89.98
But today, you're getting all of this...
For Only $29.78
Oh, and in case you're wondering... 

THERE IS NO CATCH!

I know there are some websites out there that offer you a great deal on something but then stick you in some program that charges your card every month.

This isn’t one of them.

There’s NO hidden “continuity program” you have to try …or anything even remotely like that.

I’m literally giving you all of this for $29.78, as a means of “putting my best foot forward” and demonstrating real value.

My hope is that you’ll love it and this will be the start of a good business relationship for years to come.
PS : In case you’re one of those people (like me) who just skip to the end of the letter, here’s the deal...

I’m offering you a 24+ hour online course on modern bare-metal embedded c programming together with the complete source code for download.

This course is $29.78

I’m also offering you the STM32L0 bare-metal programming course which teaches you how to develop bare-metal peripheral drivers and firmware for the STM32L0 microcontroller this bonus course also comes with complete source code download.

On top of all that, I’m offering you a mini-cookbook on writing assembly programs for arm micro-controllers.

This is a very limited offer because it’s a marketing test.

There is no “catch” to this offer. You will not be signing up for any “trial” to some monthly program or anything like that.

In fact if you don’t like the course let me know and I’ll even give you back the $29.78. You get to keep the mini-cookbook.

Click the button below to claim your access. You won’t regret it.
A little about me : Israel Ninsaw Gbati
Some of you may have taken some of my embedded systems courses from other online platforms. 
This is my private channel. 

I have been writing embedded firmware for years, I have built embedded devices like consumer products and robotic arms.
Till date I have 
trained over 75,000 students in embedded
 firmware development online
...including third year undergraduate university students in-person.

If you have taken any of my courses before you will know I start from the absolute basics, I do not assume that the student has any prior knowledge of the topic under discussion. You will also know that by the end of the course you understand the functions of every register used in developing the particular firmware or driver.

This method is the same for all of my published embedded systems courses. 

My  courses have been reviewed by 10,000+ students
Here are some of the reviews