We may earn an affiliate commission when you visit our partners.
Course image
FastBit Embedded Brain Academy and Kiran Nayak

>> Your Search for an in-depth microcontroller programming course ends here . <<<

Course code: MCU1

Learn bare-metal driver development using Embedded C : Writing drivers for

Update 6: videos are updated with the latest

Read more

>> Your Search for an in-depth microcontroller programming course ends here . <<<

Course code: MCU1

Learn bare-metal driver development using Embedded C : Writing drivers for

Update 6: videos are updated with the latest

Update 4: Dedicated support team is assigned to address student's Q/A

Update 3: English Closed captions are fixed

Update 2  : Added Bus matrix / memory map /vector table /interrupt design discussion with code examples.

Update 1: Eclipse IDE setup for ARM Cortex M based MCUs added

The course is designed for beginners to advanced audiences.

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 entirely 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 complex field, there's no actual 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 connect the dots.

This is the motivation behind creating this course to help engineers and students learn different aspects of embedded systems by providing high-quality advanced lectures at a relatively low price.

Master Behind the Scene working;

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 will learn to write your peripheral driver for most commonly used peripherals such as GPIOs, and the exciting thing is that you will learn everything from scratch.

No 3rd party libraries.

No blind coding.

Write your 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 procedures on configuring various Peripherals like GPIOs We will develop a 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 learn something new to use in your work or projects. You'll find yourself handling these peripherals with much more clarity. You will be able to speculate and debug the problem quickly. I'll show you tricks and tips to debug the most common issues using debugging tools such as logic analyzers.

This is not the Arduino style of programming:

I believe Arduino is for quick prototyping of projects/products but not for mastering the working of micro-controllers and their peripherals. Unlike Arduino programming, where you develop a quick solution and prototyping of products using third-party libraries, this course is entirely different. In this course, no 3rd party libraries are used. Everything we will code by referring to the technical reference manual of the MCU and will create our own library. The Power of this approach is that you can quickly speculate problems and debug like a pro when things go wrong in your project due to bugs. If one thing me and my students are good at is "debugging,." To achieve good debugging skills, it's essential to code by understanding how things work behind the scene but not by blindly using some third-party libraries, and that's the biggest TAKE away from this course.

The course is designed and explained so that it is generic across any microcontroller. The code we develop can be used as templates to quickly build a peripheral driver for your MCUs on-chip peripherals.

Software/Hardware used:

In this course, the code is developed so that it can be ported to any MCU you have at your hand. If you need any help 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 that runs with an ARM-Cortex M3/M4 processor, I recommend you continue using it. But if you don't have any development boards, then check out the below Development boards.

1. I will personally answer your questions about this material, either privately or in a group discussion. If you are 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.

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)

Enroll now

What's inside

Learning objectives

  • 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
  • Show more
  • Show less

Syllabus

Notes and Information
About the instructor
Important Note

This lecture gives complete overview about the course !

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

Read more
Source Code and Slides
Rating and Review
Development board used in our courses
About MCU Development board
Hardware/Software Requirements
IDE installation
Downloading STM32CUBEIDE
Installation-Windows
Installation-Ubuntu
Embedded Target
Documents required
Creating a project using STM32CUBEIDE
Creating Hello-World project
SWV working principle
Testing Hello-World through SWV
OpenOCD and Semihosting to use printf
Embedded Code Debugging Tips and tricks
Debugging options
Single stepping
Disassembly and Register windows
Breakpoints
Expression and variable windows
Memory browser windows
Call stack and fault analyzers
Data watch-points
SFR windows
Other basic features of IDE
Understanding MCU Memory Map
Understanding Memory Map of the MCU: Part 1
Understanding Memory Map of the MCU: Part 2
Understanding Memory Map of the MCU: Part 3
Test your understanding
MCU Bus Interfaces
MCU Bus Interfaces Explanation Part 1: I-Code/D-Code/S-Bus
MCU Bus Interfaces Explanation Part 2: AHB/APB1/APB2
MCU Bus Interfaces Explanation Part 3: Q/A session
Understanding MCU Bus Matrix

For STM32F4O7xx discovery, the width of the system bus is ____

Understanding MCU Clocks and Details
Understanding MCU Clocking System:Part1
Understanding MCU Clock tree
Understanding MCU clock sources and HSE
HSI and RCC registers
Peripheral clock configuration
Exercise : HSI measurements
About USB logic analyzer
Code implementation
Exercise : HSE measurements
Understanding MCU Vector table
Understanding MCU Vector Table
Understanding MCU interrupt Design , NVIC, Interrupt handling
Understanding MCU interrupt Design , NVIC, Interrupt handling: Part 1
Understanding MCU interrupt Design , NVIC, Interrupt handling: Part 2
Understanding MCU interrupt Design , NVIC, Interrupt handling: Part 3
Importance of "Volatile" Keyword
Importance of "Volatile" Keyword: Part-1
Importance of "Volatile" Keyword-Part 2
GPIO Must know concepts

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

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 

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 !

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. 

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. 

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. 

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 

GPIO Programming structure and Registers

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


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


GPIO Mode register(used to set mode for a pin)
Input configuration of a Microcontroller's GPIO Pin
Output Configuration of a GPIO Pin in Push pull mode
Output Configuration of a GPIO Pin in open drain mode
Input stage of a GPIO pin during output configuration
Alternate functionality Configuration of a GPIO 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 Registers : SPEED, PULL UP/DOWN, IDR and ODR

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 Pull up and Pull down register
GPIO input data register
GPIO output data register and summary of various modes discussed
GPIO Alternate functionality register and example of usage
Alternate functionality settings of a GPIO pin with example : Part 1
Request for Review
Find Out I/O Alt Functionality
GPIO peripheral clock control
Enabling and disabling GPIO peripheral clock
GPIO driver development overview and Project creation
GPIO driver development overview
MCU Specific header file and its contents
New project creation and creating MCU specific headerfile
Include path settings

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Provides comprehensive study of microcontroller programming and driver development
Suitable for both beginners and advanced learners
Covers fundamental concepts of microcontroller programming and embedded systems
Practical approach with hands-on code examples and debugging techniques
Taught by experienced instructors with a strong track record in embedded systems
Course completion certificate available

Save this course

Save Mastering Microcontroller and Embedded Driver Development to your list so you can find it easily later:
Save

Reviews summary

Mastering microcontroller and embedded driver development

Mastering Microcontroller and Embedded Driver Development is a highly rated online course for learning about embedded systems and driver development using ARM Cortex-M microcontrollers. The course is structured in a logical way, with a clear focus on developing a deep understanding of the concepts involved. The instructor is knowledgeable and provides detailed explanations and examples. The course materials include exercises and projects to reinforce learning, and there is a strong emphasis on reading and understanding documentation. Learners say that the course is comprehensive and well-paced, and that they have gained a significant amount of knowledge and confidence in embedded systems development. They also appreciate the instructor's responsiveness and willingness to help. However, some learners have found the course to be challenging, and have recommended having some prior experience in C programming and electronics before enrolling.
MCU Programming structure and Registers
"MCU Programming structure and Registers"
Explore MCU data sheets, Reference manuals, start-up Codes to get things done
"Explore MCU data sheets, Reference manuals, start-up Codes to get things done"
In each lecture, I assure you that you will learn something new to use in your work or projects. You'll find yourself handling these peripherals with much more clarity. You will be able to speculate and debug the problem quickly. I'll show you tricks and tips to debug the most common issues using debugging tools such as logic analyzers.
"In each lecture, I assure you that you will learn something new to use in your work or projects."
"You'll find yourself handling these peripherals with much more clarity."
"You will be able to speculate and debug the problem quickly."
"I'll show you tricks and tips to debug the most common issues using debugging tools such as logic analyzers."
Everything we will code by referring to the technical reference manual of the MCU.
"Everything we will code by referring to the technical reference manual of the MCU."
Coding for the Peripherals STEP-BY-STEP and Developing software drivers entirely from scratch by extracting maximum information from Datasheets, Reference manuals, specs, etc
"Coding for the Peripherals STEP-BY-STEP and Developing software drivers entirely from scratch by extracting maximum information from Datasheets, Reference manuals, specs, etc"
This is not the Arduino style of programming:
"This is not the Arduino style of programming:"
But not for mastering the working of micro-controllers and their peripherals. Unlike Arduino programming, where you develop a quick solution and prototyping of products using third-party libraries, this course is entirely different. In this course, no third party libraries are used.
"But not for mastering the working of micro-controllers and their peripherals."
"Unlike Arduino programming, where you develop a quick solution and prototyping of products using third-party libraries, this course is entirely different."
"In this course, no third party libraries are used."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Mastering Microcontroller and Embedded Driver Development with these activities:
Set up your microcontroller development environment
Familiarity with the development environment will help you smoothly follow along with the course
Show steps
  • Install the necessary software and tools for your development board
  • Set up your development environment (e.g., STM32CubeIDE)
  • Create a new project and write a simple program to blink an LED
Develop a project using peripherals covered in the course
Creating a project will allow you to apply your knowledge and skills to a practical application
Show steps
  • Choose a project idea that incorporates multiple peripherals
  • Design and implement the hardware and software for your project
  • Test and debug your project, ensuring it meets requirements
Attend a workshop on embedded systems programming
Attending a workshop will provide you with an opportunity to learn from experts and network with others in the field
Show steps
  • Find and register for a workshop that aligns with your interests
  • Attend the workshop and actively participate in sessions
  • Network with other attendees and speakers
  • Follow up on any connections or resources gained at the workshop
One other activity
Expand to see all activities and additional details
Show all four activities
Contribute to open-source projects related to embedded systems
Contributing to open-source projects will allow you to gain practical experience and collaborate with others
Show steps
  • Identify open-source projects that align with your interests and skills
  • Contact project maintainers and express your interest in contributing
  • Work on bug fixes, feature enhancements, or documentation improvements
  • Submit your contributions for review and merge

Career center

Learners who complete Mastering Microcontroller and Embedded Driver Development will develop knowledge and skills that may be useful to these careers:
Embedded System Software Engineer
Embedded System Software Engineers design, develop, and test software for embedded systems. This course provides a comprehensive overview of microcontroller programming, including topics such as debugging, interrupt handling, and protocol decoding. It also emphasizes the importance of understanding hardware concepts such as memory mapping and bus interfaces, which are crucial for Embedded System Software Engineers.
Embedded Software Developer
Embedded Software Developers design and develop software for embedded systems. This course provides a solid foundation in microcontroller programming, including topics such as debugging, interrupt handling, and protocol decoding. It also emphasizes the importance of understanding hardware concepts such as memory mapping and bus interfaces, which are essential for Embedded Software Developers.
Microcontroller Firmware Developer
Microcontroller Firmware Developers focus on writing and debugging firmware specifically for microcontrollers. This course provides a comprehensive overview of microcontroller programming, including topics such as memory mapping, clock configurations, and interrupt handling. The emphasis on developing peripheral drivers from scratch using reference manuals and datasheets is particularly relevant for this role.
Industrial Automation Engineer
Industrial Automation Engineers design, develop, and maintain automated systems in industrial settings. This course provides a solid foundation in microcontroller programming, including topics such as debugging, interrupt handling, and protocol decoding, which can be beneficial for Industrial Automation Engineers who need to develop software for programmable logic controllers (PLCs) and other embedded systems used in industrial automation.
Embedded Firmware Engineer
Embedded Firmware Engineers work with developing, maintaining, and testing the embedded software that runs on electronic devices such as smartphones, medical equipment, and industrial control systems. This course may be helpful for those interested in this career as it provides a deep dive into the internal workings of microcontrollers and their peripherals, including GPIOs, SPI, I2C, and USART. It also emphasizes practical skills such as debugging and protocol decoding, which are essential for Firmware Engineers.
Mechatronics Engineer
Mechatronics Engineers design and develop systems that integrate mechanical, electrical, and computer engineering principles. This course provides a good foundation in microcontroller programming, including topics such as debugging, interrupt handling, and protocol decoding, which can be beneficial for Mechatronics Engineers who need to develop embedded software for their systems.
Embedded Systems Engineer
Embedded Systems Engineers design and develop systems that integrate hardware and software components. Course topics such as understanding memory mapping, bus interfaces, and clock configurations are highly relevant for Embedded Systems Engineers as they provide a foundation for understanding the underlying hardware architecture and its impact on software performance.
Hardware Engineer
Hardware Engineers design and develop electronic circuits and systems. While this course focuses primarily on software development, its coverage of hardware concepts such as memory mapping, bus interfaces, and clock configurations can be beneficial for Hardware Engineers who wish to gain a more holistic understanding of embedded systems.
Robotics Engineer
Robotics Engineers design, build, and maintain robots. While this course focuses primarily on microcontroller programming, its coverage of hardware concepts such as memory mapping and bus interfaces can be beneficial for Robotics Engineers who need to develop software that interacts with hardware components.
Test Engineer
Test Engineers design and conduct tests to ensure that products meet specifications and quality standards. This course may be helpful for those interested in this career as it provides a good foundation in debugging techniques and protocol decoding, which are essential skills for Test Engineers.
Computer Architect
Computer Architects design and develop the overall architecture of computers and embedded systems. This course provides insights into the internal workings of microcontrollers, including their bus interfaces, memory organization, and interrupt handling mechanisms, which can be beneficial for Computer Architects who need to optimize the performance and efficiency of embedded systems.
Electronics Technician
Electronics Technicians install, maintain, and repair electronic devices and systems. This course provides a solid foundation in the underlying principles of microcontroller operation and programming, which can be helpful for Electronics Technicians who need to troubleshoot and diagnose issues in embedded systems.
Software Engineer
Software Engineers design, develop, and test software applications. While this course focuses on embedded systems programming, its emphasis on software development principles, debugging techniques, and API design can be beneficial for Software Engineers who wish to specialize in embedded software development.
Electrical Engineer
Electrical Engineers design, develop, and maintain electrical systems and devices. While this course focuses primarily on software development, its coverage of hardware concepts such as memory mapping, bus interfaces, and clock configurations can be beneficial for Electrical Engineers who need to understand the software-hardware interface in embedded systems.
Computer Hardware Engineer
Computer Hardware Engineers design and develop computer hardware components such as motherboards, processors, and memory modules. While this course focuses on software development, its coverage of hardware concepts such as memory mapping, bus interfaces, and clock configurations can be beneficial for Computer Hardware Engineers who need to understand the software-hardware interface.

Reading list

We've selected nine books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Mastering Microcontroller and Embedded Driver Development.
Provides a comprehensive guide to modern embedded computing using the Arm Cortex-M processor family. It covers topics such as real-time operating systems, concurrency, and networking.
Provides a comprehensive overview of microcontrollers, including their architecture, programming, interfacing, and system design. It valuable resource for both beginners and experienced engineers.
Practical guide to interfacing PIC microcontrollers with peripheral devices such as LCDs, keyboards, DACs, ADCs, RS232, I2C, SPI, CAN, and USB. It provides step-by-step instructions, circuit diagrams, and sample code.
Provides a comprehensive guide to embedded systems design using the ARM Cortex-M3 microcontroller. It covers topics such as hardware design, software development, and system integration.
Provides a comprehensive overview of embedded systems design. It covers topics such as hardware design, software development, and system integration.
Provides a comprehensive overview of embedded systems design. It covers topics such as hardware design, software development, and system integration.
Provides practical and ready-to-use recipes for ARM Cortex-M4 microcontrollers. It covers topics such as GPIO, timers, interrupts, DMA, and ADC.
Provides a hands-on introduction to the 8051 microcontroller and embedded systems. It covers topics such as assembly language programming, C programming, and interfacing with peripherals.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Mastering Microcontroller and Embedded Driver Development.
Microcontroller Embedded C Programming: Absolute Beginners
Most relevant
STM32Fx Microcontroller Custom Bootloader Development
Most relevant
Mastering RTOS: Hands on FreeRTOS and STM32Fx with...
Most relevant
Embedded Systems Programming on ARM Cortex-M3/M4 Processor
Most relevant
Embedded Systems Essentials with Arm: Get Practical with...
Most relevant
ARM Cortex (STM32) Deep Dive: Mastering Embedded Systems
Most relevant
Embedded Systems Essentials with Arm: Getting Started
Most relevant
Microcontroller Applications with RISC-V
Most relevant
Embedded Software and Hardware Architecture
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser