>> Your Search for in-depth Microcontroller Programming Course ends here !!<<<
Course UP TO DATE as of November 2016!
The course is designed for Beginners to Advanced audience.
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.
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.
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 .
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.
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.
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.
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.
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 .
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
In this lecture I will talk about the GPIO port input Data register and its usage.
In this lecture I will talk about the GPIO port Output Data register and its usage.
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.
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.
In this lecture I will walk you through installing newer KEIL-MDK-5 software.
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
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.
In this lecture you will come know, some debugging options available in the KEIL-Micro vision IDE. like
In this lecture lets quickly explore the STM32F407 discovery board and its parts.
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
In this lecture , lets decide various APIs , which needs to supported by our GPIO driver.
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 .
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
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.
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.
This lecture implements helper function to configure the I/O mode
In this lecture, you will code a helper function to configure the I/O speed and output type
In this lecture, you will code a helper function to configure the I/O Pull-up/pull-down capability
In this lecture, you will code a helper function to configure the I/O alternate functionality .
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
Lets write separate Turn on/Turn off/Toggle LED functions by using our driver exposed APIs
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 .
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
Kiran Nayak holds the Designation of Embedded Software Developer and has over 8+ years of experience in domain Embedded Software Development, Firmware Engineering, Real time systems, etc. He worked with some of the leading chip manufacturing companies in the domain of firmware engineering, BLE SDK development, Low power wireless protocol stack development, etc.
He is with udemy for more than a year and has produced 3 courses on ARM Cortex M processor programming, Microcontroller programming by scratch and also on Real Time Operating systems.
He is a frequent presenter in Conferences and seminars. He obtained his bachelor’s Degree in Electronics and Communication engineering and Co-authored and presented Many IEEE papers in different International conferences.