Embedded Systems Bare-Metal Programming Ground Up™ (STM32)
No Libraries used, Professional CMSIS Standard, ARM Cortex, ADC,UART,TIMERS, DMA,SPI,I2C,RTC,GPIO etc.
Created by Israel Gbati, BHM Engineering Academy | 24.5 hours on-demand video course
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 STM32F4-NUCLEO which has an ARM Cortex-M4 microcontoller.
What you’ll learn
- Write firmware using only bare-metal embedded-c
- Understand the Cortex-M Architecture
- Write Analog-to-Digital Converter (ADC) drivers using bare-metal embedded-c
- Write PWM drivers using bare-metal embedded-c
- Write UART drivers using bare-metal embedded-c
- Write TIMER drivers using bare-metal embedded-c
- Write Interrupt drivers using bare-metal embedded-c
- Write SPI drivers using bare-metal embedded-c
- Write I2C drivers using bare-metal embedded-c
- Master the ARM-Cortex CMSIS standard
- Write DMA drivers using bare-metal embedded-c
- 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