STM32L0 Bare-Metal Peripheral Drivers Development

No Libraries used, Professional CMSIS Standard, ARM Cortex, ADC,UART,TIMERS, GPIO,SPI,I2C etc.

4.55 (18 reviews)
Udemy
platform
English
language
Hardware
category
instructor
231
students
7 hours
content
Feb 2023
last update
$69.99
regular price

What you will learn

Write firmware using only bare-metal embedded-c

Understand the Cortex-M Architecture

Write Bare-Metal ADC Drivers for the STM32L0 Microcontroller

Write Bare-Metal TIMER Drivers for the STM32L0 Microcontroller

Write Bare-Metal UART Drivers for the STM32L0 Microcontroller

Write Bare-Metal INTERRUPT Drivers for the STM32L0 Microcontroller

Write Bare-Metal GPIO Drivers for the STM32L0 Microcontroller

Write Bare-Metal SPI Drivers for the STM32L0 Microcontroller

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

Define addresses for the different peripherals

Analyze the chip documentation

Create registers from the addresses

Description

Are you tired of Copying and Pasting code you don't understand?

With a programming based approach, this course is designed to give you a solid foundation in bare-metal firmware development for  ARM-based microcontrollers . 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.

Still keeping it simple, this course comes in different ARM Cortex-M development boards  so that students can put the techniques to practice using an ARM Cortex-M development board of their choice. This version of the course uses the STMicroelectronics  STM32L0-NUCLEO which has an ARM Cortex-M0+ microcontoller.


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 1st version (STM32F4) of the course :


  "I would suggest this course for all the beginners. The concepts have been covered in the right sequence.And also the best part of this lecture series is getting to know how to explore the reference manual and datasheets."

Here is what another student had to say :

    "Extremly helpful to get to understand the uC programming deeper! For me it is much easier from now to develop code because I undertstand the base behind, so I'm more confident and more experienced to develop and debug the code. Really, this course is very useful to link the hardware knowledge with the coding skills. This fills the gap between them. Thanks for it! :)"

A third student :

"I am a professional semiconductor chipset application engineer with 30 years in global embedded product design in system applications. I can say this teacher is very straight forward by sharing his many years knowledge to the students with his true heart. Yes. I love his teaching pace and style!"



                                                     The First Version (STM32F4)  is being Taken by 5000+ Students with 1000+ Reviews

If at least one of the following applies to you then keep reading if not then simply skip this course:


" Escape From "

  1. Copying/Pasting code you don’t understand

  2. Using third party libraries and header files like HAL, LL and StdPeriph

  3. Experiencing bugs you don’t understand

  4. Being afraid of technical documentations like the reference manual and datasheet of the chip

  5. Imposter syndrome

" Arrive At "

  1. Building every single line of code from scratch by writing to the microcontroller’s memory space directly.

  2. Using No third party libraries or header files

  3. Understanding and writing every single line of code yourself- no Copy/Paste

  4. Using the debugger effectively to analyze and resolve any bugs

  5. Developing 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 Peripheral address

    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)

  • Nested Vector Interrupt Controller (NVIC)

  • General Purpose Timers (TIM)

  • System Tick Timer (SysTick)

  • General Purpose Input/Output (GPIO)


                                                           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.


Also it comes with a money back guarantee so you have nothing to loose.


Content

Getting Started - Constructing Peripheral Registers from Memory Addresses

Downloading our Integrated Development Environment (IDE)
Installing our Integrated Development Environment (IDE)
Getting the right Documentation for Bare-Metal Development
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(GPIO)

Overview of ARM Cortex-M General Purpose Input/Output Module
Coding : Developing the GPIO Output Driver
Coding : Controlling GPIO Outputs using the Bit Set/Reset Register (BSRR)
Coding : Developing the GPIO Input Driver

Universal Asynchronous Receiver-Transmitter(UART)

Overview of the UART Protocol
Coding : Developing the UART Transmitter Driver
Coding : Testing the UART Transmitter Driver
Coding : Retargeting printf
Coding : Developing the UART Receiver Driver
Coding : Testing the UART Receiver Driver

Analog to Digital Conversion (ADC)

Introduction to Analog to Digital Conversion
Understanding ADC Independents Modes
Coding : Developing the ADC Driver - Pt.1 Locating the ADC Bus
Coding : Developing the ADC Driver - Pt.2 Implementing the ADC Init Function
Coding : Developing the ADC Driver - Pt.3 Testing the ADC Driver
Coding : Developing the ADC Driver - Pt.3 Testing the ADC Driver
Coding : Developing the ADC Single Conversion Driver

The System Tick (SysTick) Timer

Overview of the System Tick Timer
Coding : Developing the System Tick Timer Driver

General Purpose Timers

Overview of General Purpose Timers
Coding : Developing the General Purpose Timer (GPTM) Driver

Interrupts Programming

Introduction to Interrupts
Coding : Developing the GPIO Interrupt Driver
Coding : Testing the GPIO Interrupt Driver
Coding : Developing the Systick Interrupt Driver
Coding : Developing the Timer Interrupt 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

Screenshots

STM32L0 Bare-Metal Peripheral Drivers Development - Screenshot_01STM32L0 Bare-Metal Peripheral Drivers Development - Screenshot_02STM32L0 Bare-Metal Peripheral Drivers Development - Screenshot_03STM32L0 Bare-Metal Peripheral Drivers Development - Screenshot_04

Reviews

Samuel
June 21, 2022
This course is amazing. Everything is built up from basic foundations into functional drivers giving you a great understanding of the architecture of the MCU. I will be appling what i learn here onto Arm M0+ mcus from other manufacturers, the lessons are so general.
Stephen
November 17, 2021
Terrific course. Feel like I've learnt much more useful stuff about setting up and using micros than on my uni course. Would've been even better if it had included I2C as well
Sławomir
June 5, 2021
I like yours courses but this time it didn't work out a bit. you should not mixed reference manual m0+ with M4 because it is a little bit confusing

Charts

Price

STM32L0 Bare-Metal Peripheral Drivers Development - Price chart

Rating

STM32L0 Bare-Metal Peripheral Drivers Development - Ratings chart

Enrollment distribution

STM32L0 Bare-Metal Peripheral Drivers Development - Distribution chart

Related Topics

3981608
udemy ID
4/14/2021
course created date
6/1/2021
course indexed date
Bot
course submited by