Mastering Microcontroller with Embedded Driver Development
4.4 (358 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
2,474 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Mastering Microcontroller with Embedded Driver Development to your Wishlist.

Add to Wishlist

Mastering Microcontroller with Embedded Driver Development

Learn from Scratch Microcontroller & Peripheral Driver Development for GPIO,I2C,SPI,USART using Embedded C Programming
4.4 (358 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
2,474 students enrolled
Last updated 6/2017
Current price: $15 Original price: $50 Discount: 70% off
30-Day Money-Back Guarantee
  • 9.5 hours on-demand video
  • 3 Articles
  • 1 Supplemental Resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Understand Right ways of Handling and programming MCU Peripherals
  • Develop Peripheral drivers for your Microcontroller
  • Understand complete Driver Development steps right from scratch for GPIO,SPI,I2C and USART.
  • Learn Writing peripheral driver headers, prototyping APIs and implementation
  • Explore MCU data sheets, Reference manuals, start-up Codes to get things done
  • Learn Right ways of handling/configuring Interrupts for various peripherals
  • Learn about Peripheral IRQs/Vector table/NVIC interfaces and many
  • Learn about Configuration/status/Control registers of various Peripherals
  • Demystifying behind the scene working details of SPI,I2C,GPIOs,USART etc.
  • Explore hidden secretes of MCU bus interfaces, clock sources, MCU clock configurations, etc.
  • Understand right ways of enabling/configuring peripheral clocks/serial clocks/baud rates of various serial protocols
  • Learn about MCUs AHB, APB bus protocols
  • Learn about different MCU clocks like HCLK, PCLK, PLL,etc
  • Learn to capture/decode/analyze traces of serial protocols on Logic analyzer
  • Learn about Quick ways of debugging peripheral issues with case studies
View Curriculum
  • Basic knowledge of C and Micro controller could be added advantage but not mandatory

>> Your Search for in-depth Microcontroller Programming Course ends here !!<<<

The course is designed for Beginners to Advanced audience. 

Brief Description 

This Course Demystifies the internal working of the Microcontroller and its Peripherals.

Coding for the Peripherals STEP-BY-STEP and Developing software drivers completely from scratch by extracting maximum information from Datasheets,Reference manuals, specs,etc

Protocol Decoding Using logic analyzers, Debugging, Testing along with Hints and Tips. 

Long Description:

Learning Embedded System Programming, can be a challenge. Since it's a relatively little complex field, there's no real gold standard yet for how things are practiced, or taught, which can frustrate people who are just trying to learn new things and couldn’t able to connect the dots and this is the motivation behind creating this course to help engineers and students to learn different aspects of embedded systems by providing high quality advanced lectures with relatively low price.

Learn at your own pace using progressive method, with each of my short, info-packed lectures.

Master Behind the Scene working !
I created this course because I believe your time is precious, and you shouldn't have to hunt around to get a practical foundation In Embedded System Programming. In this course, you are going to learn writing your own peripheral driver for most of the commonly used peripherals such as GPIOs, I2C, SPI, USART, etc. and interesting thing is that you are going to learn everything from scratch.

No 3rd party libraries !

No blind coding !

Write your own Driver APIs by dealing with the Peripheral Registers of the MCU !

Code and Implement APIs from scratch , diving into the datasheet and reference manual of the MCU. I will thoroughly explain how to extract the maximum information from datasheets, Technical Reference manuals to configure and handle peripherals. These techniques you can go and apply to any MCUs you have at your hand.

In this course I will walk you through step by step procedure how to Configure various Peripherals like GPIOs,SPI,USART,I2C by taking you into the reference manual and data sheet. We will develop fully working driver code, interrupt handlers, sample application everything from scratch to understand the big picture.

In each lecture, I assure you that, you will definitely learn something new that you can definitely use in your work or projects. You'll find yourself handling these peripherals with much more clarity and you will be able to quickly speculate and debug the problem and I’ll show you tricks and tips to debug the most common problems  using debugging tools such as logic analyzers. 

This is not Arduino Style of programming!

I believe Arduino is for quick prototyping of products but not for Mastering Working of microcontrollers and its peripherals. Unlike Arduino programming where you come up with quick solution and prototyping of products using third party libraries, this course is entirely different. In this course no 3rd party libraries is used. Everything we will code by referring to the Technical reference manual of the MCU and create our own library. The Power of this approach is when things go wrong in your project work due to bugs, you can quickly able to speculate problem and debug like a pro. If one thing me and my students are good at is "debugging". To achieve good debugging skills its very important you code by understanding how things works behind the scene but no by just blindly using some third party libraries and that’s the biggest TAKE away from this Course.

The course is designed and explained in such a way that, it is  generic across any kind of microcontroller. The code we develop can be used as templates to quickly come with peripheral driver for your MCUs on chip peripherals.

Software/Hardware used:
In this course, the code is developed such a way that, It can be ported to any MCU you have at your hand. If you need any help in porting these codes to different MCUs you can always reach out to me! The course is strictly not bound to any 1 type of MCU. So, if you already have any Development board which runs with ARM-Cortex M3/M4 processor, then I recommend you to continue using it. But if you don’t have any Development board, then checkout the below Development boards.

1.    STM32F407xx based Discovery board ( This is the board used in this course )

MCU Vendor : STMicroelectronics

2.    STM32 Nucleo-64 development board( New in the market )

MCU Vendor : STMicroelectronic

3.    FRDM-K64F: Freedom Development Platform

MCU Vendor : NXP

4.    STM32F429IDISCOVERY with LCD

MCU Vendor :  STMicroelectronics

My promise !
I am confident that this course will save you many, many hours of studying/experimenting/googling  time to learn about Programming the MCU. I will personally answer your questions about this material, either privately or in a group discussion.  If you are in any way not satisfied, for any reason, you can get a full refund from Udemy within 30 days. No questions asked. But I am confident you won't need to. I stand behind this course 100% and am committed to helping you . 

Who is the target audience?
  • Professionals interested in exploring Embedded systems
  • Hobbyists and students who want to start their career in Embedded world
  • If you think about 'embedded' then think about taking this course. you will not be disappointe
  • This Course may not be suitable for those people who are looking for quick prototyping using boards such as Arduino
Curriculum For This Course
200 Lectures
Overview of the Course
2 Lectures 06:02

This lecture gives complete overview about the course !

Watch this full, before deciding to take this course .. It is available for free preview 

Preview 05:57

Source Code Download Link
GPIO Must know concepts
7 Lectures 19:40

A quick explanation about GPIO pin and GPIO Port of a Microcontroller to get started. 

GPIO pin and GPIO port

Ahh. This is a very important lecture, where You will come to know, whats the behind the scene implementation of an I/O pin in the MCU. Understanding behind the scene implementation is very important to know how GPIOs actually behave. 

you will also come know I/O input and output mode, input and output mode buffers associated with an I/O pin which gets activated as per the mode selection 

GPIO behind the scene

In this Lecture I will explain about GPIO input mode with HI-Z or high impedance state configuration .

you will understand , what exactly HI-Z state is !

Preview 01:13

In this lecture, You will understand GPIO input mode with pull up or pull down state. 

you will come to know about pull up and pull down resistors and whats their importance. 

GPIO input mode with pull-up/down state

This is a very important lecture where you will come to know, what exactly is open drain state, What is its advantages , How to use open drain configuration in a practical scenarios like Driving LEDs or I2C bus implementation. 

I will also show you , how to make use of open drain output mods by using internal or external pull-up resistors. 

GPIO output mode with open drain state

In this lecture you will come to know GPIO output mode with push pull configuraion. 

I will talk about push pull configuration in detail and some practical use cases like driving LEDs from push pull state. 

GPIO output mode with push pull state

if you ever heard that by keeping pin floating you may be wasting power through I/Os, In this lecture lets see 

how current gets leaked out through I/O pin during different configurations and how to solve it 

Preview 03:11
GPIO Programming structure and Registers
10 Lectures 20:40

In this lecture, in general i will talk about typical gpio programming structure in a Microcontroller. 

Preview 02:44

Lets see how many GPIO ports our MCU supports and How many ports are brought out on the development board. 

Exploring GPIO PORT and pins of STM32F4xx Discovery board

In this lecture lets explore about one of the most common and must use GPIO register , that is GPIO MODE selection register. I will walk you through  this register by taking you to the technical reference manual of the MCU. 

GPIO Mode register(used to set mode for a pin)

In this lecture lets explore about  GPIO Output Type register which is used to select the output type for an I/O pin. I will walk you through  this register by taking you to the technical reference manual of the MCU.

GPIO port output type register(used to specify o/p type)

In this lecture you will come know the significance of GPIO speed register which controls the I/O transition .

All modern day MCUs has this register to control the speed parameter . 

GPIO port output speed register (how quick transition?)

Do you know most of the I/Os has their own internal pull-up and pull-down resistors, which you can activate by configuring the configuration register. 

This lecture discusses about that register

Preview 01:35

In this lecture I will talk about the GPIO port input Data register and its usage.

GPIO port input data register (used to read from pin)

In this lecture I will talk about the GPIO port Output Data register and its usage.

GPIO port output data register(used to write to pin)

Do you know, every peripheral in the MCU needs clock to operate and it is called peripheral clock . ?

and Do you also know that, in MCU by default peripheral clocks for all most all peripherals are disabled to save power. ?

In this lecture , I will show you how to enable and disable the GPIO peripheral clock .

We will also explore the MCUs clock registers to configure the clock for different GPIO ports. 

Preview 02:41

This is very important lecture, where I will discuss how to configure an I/O pin for different alternate functionalities like I2C, SPI,UART,etc. 

Configuring alternate functionality register is must when you wan to use I/O pin for I2C,SPI,USART communication.  

Preview 03:44

Find Out I/O Alt Functionality
1 question
GPIO Driver Development: Lab Setup
6 Lectures 16:16
Hardware/Software Requirements

In this lecture I will walk you through installing newer KEIL-MDK-5 software. 

Installing KEIL-MDK-5

In this lecture I will walk you through installing software packs on top of KEL-MDK-5 software. 

Software packs are very important and needs to be installed for your MCU using pack installer of the KEIL Micro vision IDE

Installing Software Packs

Lets get started with KEIL-micro vision IDE by creating a simple project for your target. 

I will also explain what are the target specific configurations you need to do in order to flash the code successfully on to your board. 

Creating Your First KEIL Project

In this lecture you will come know, some debugging options available in the KEIL-Micro vision IDE. like

single stepping 

memory window 

watch functionality 

setting/clearing breakpoints

disassembly window 


Debugging Project using KEIL µVison-4 IDE

In this lecture lets quickly explore the STM32F407 discovery board and its parts. 

Understaning The Discovery Board
GPIO Driver Development: Getting started
2 Lectures 03:20

In this lecture lets explore the overview of our driver development task . 

This helps to understand the big picture of what we are going to accomplish in the subsequent sections 

Overview of the driver development task

In this lecture , lets decide various APIs , which needs to supported by our GPIO driver. 

Driver API Requirements
GPIO Driver Development: Explore MCU specific header file
3 Lectures 06:53

This lecture will explain how to organise files in KEIL project which helps you to handle more complex project where various source files and header files are involved . 

Creating/Organizing project files in KEIL

MCU specific header files are very important to be aware of , because it contains various information like MCU memory map, Peripheral register structure, IRQs, register bit definitions,etc. 

Each MCU will have its own MCU specific header file. 

In this lecture lets, locate where all the MCU specific header files are located in you PC as a part of software pack 


Locating MCU specific Header File

In this lecture, I will walk you through some of the important information of the MCU specific header file like Memory map, Peripheral register structure , base addresses of various peripherals , etc. 

Exploring MCU specific Header File

Explain __IO
1 question
GPIO Driver Development : Driver header file
1 Lecture 05:49

Before writing driver source file, its very important to write the driver header file which must have the following information

1) Peripheral register bit definition macros 

2) Peripheral Private data structure 

3) Driver API prototype 

4) other helper macros . 

in this lecture lets fill up our driver header file with all the above details. 

Implementing Driver Header file
GPIO Driver Development: Implementing Init API
4 Lectures 07:44

This lecture implements helper function to configure the I/O mode 

Code to configure the mode

In this lecture, you will code a helper function to configure the I/O speed and output type

Code to configure GPIO speed and output type

In this lecture, you will code a helper function to configure the I/O Pull-up/pull-down capability 

Code to configure GPIO pull-up/pull down

In this lecture, you will code a helper function to configure the I/O alternate functionality . 

Configuring alternate function

Embedded Coding Skill
1 question
GPIO Driver Development: Implementing Read/Write APIs
2 Lectures 02:11

In this lecture you will implement the GPIO Read API of the GPIO driver

Preview 01:14

In this lecture you will implement the GPIO Write API of the GPIO driver

Preview 00:57
GPIO driver Code testing:Writing Sample APP
4 Lectures 08:57

From this lecture, lets start implementing the Sample APP to test our GPIO driver code,

First will will write a init function to configure the on board LEDs by using driver exposed APIs

Write init function to configure LED

Lets write separate Turn on/Turn off/Toggle LED functions by using our driver exposed APIs

Code implementation to turn on/off/toggle LED

In this lecture, Lets see how we can test the whole implementation(driver + sample app) on the target board. 

we will  build , flash  and run on to the target board . 

Testing the sample Application on development board

Lets get the trace on the USB logic analyzer and see how it looks toggling the LEDs

You must see a beautiful square wave on the logic analyzer. 

In this lecture lets learn how to achieve that. 

I will teach you , how to configure, connect and capture the trace. you will indeed like it 

Testing LED behaviour on logic analyser software
49 More Sections
About the Instructor
FastBit Embedded Brain Academy
4.3 Average rating
930 Reviews
5,208 Students
3 Courses
Works on Firmware and Embedded Engineering

We leverage the power of internet to bring online courses at your finger tip in the domain of Embedded systems and programming, Microcontrollers, Real time operating systems, Firmware development, Embedded Linux.  Thanks to Udemy !

Our online courses are appreciated, shared, reviewed by more than 5000+ customers across 100+ countries. Our primary goal is to teach Embedded systems and programming, electronics in enjoyable way with examples and using lots of animations, which help our students to excel in this field.

Backed with strong industry experience of more than 10+ years in many of the leading chip manufacturing companies , our instructors carefully crafted all these online courses to help students  access industry standard professional coaching with very low price tag, thus saving your time, effort and money !

Try our courses, and we are sure that, the courses indeed make you feel, you did a right choice.

We believe in doing REAL WORK, which solves our customers REAL PROBLEMS!!

Read Full Reviews to understand more about the courses !