Course basics
  • Important points before you get started
Cortex-M Introduction and Architecture Overview
  • ARM Cortex Family
  • Cortex-M Family
  • Cortex-M4 Instruction Set
  • ARM vs Thumb instructions quiz
  • Guidelines
  • Overview of the Nucleo F303RE board
  • Reference Documents
Cortex-M Programmer's Model
  • Programmer's Model
  • General Registers and Process Specific Registers
  • Special Registers
  • Lab Session #1 - Programmers Model - General and Special Registers
  • Programmers Model Quiz
  • Lab Session #2 - Programmers Model - xPSR and Control Register
Cortex-M Exception Model, Vector Table and VTOR
  • Exception Model and Vector Table
  • Lab Session #3 - Reset Exception Handler and the Vector Table
  • Vector Table Offset Register (VTOR)
  • Lab Session #4 - Using VTOR to move vector table to SRAM
  • Exception Model Quiz
Cortex-M Core Blocks
  • Core Blocks inside the ARM microcontroller
  • Big Endian vs Little Endian
  • STM32F3x System Overview, Bus Interface
How to choose the right microcontroller for your application
  • How to choose a microcontroller for your project
  • Powering up a microcontroller on a breadboard
(NEW) Peripherals of the microcontroller
  • Timers and counters
  • Prescalers
  • PLL - Phase lock loop
  • ADC - analog to digital converters
  • DAC - Digital to analog converters
  • I/O ports
  • AC - Analog comparators
(NEW) Special features of a microcontroller
  • Interrupts
  • Reset sequence and watchdog timer
  • JTAG - Joint Test Action Group
(NEW) LAB: Windows, Mac, Linux - Development environment setup
  • Setting up the development environment
(NEW) LAB: UART driver development
  • A deep dive into UART and its implementation
(NEW) LAB: I2C - Inter-integrated communication driver development
  • The I2C protocol
  • I2C open drain
  • TIMED CHALLENGE: I2C driver development
LAB: GPIO - General purpose input output driver development
  • Project 1 - GPIO Peripheral Driver Development
  • ADC lab exercise
LAB: DAC & TIM - Digital to analog conversion driver development
  • Project 2 - DAC and TIM Peripheral Driver Development
(Optional): Setting up an Eclipse based development environment from scratch
  • Section Introduction
  • Setting up the virtual machine
  • Setting up Linux OS on the virtual machine
  • Setting up the Eclipse development environment
  • Setting up the development toolchain
  • Creating a blinky project
  • Setting up the open source debugger (Part 1)
  • Setting up the open source debugger (Part 2)
  • Install STCubeMX for generating HAL drivers
  • Running the blinky project
  • FAQ and Troubleshooting
  • Toolchain installation instructions for MacOS users
Congratulations and Thank you!
  • Guidelines
  • Closing Notes