Back to Learning

Learning Area

In Progress

Embedded Systems

Developing the ability to program microcontrollers close to the hardware, understand how software interacts with processor memory and peripherals, and build reliable connections between code and physical components.

My current work begins with Embedded C and practical experimentation using the STM32F407G-DISC1. The planned path then progresses into ARM Cortex-M processor architecture and bare-metal peripheral-driver development.

Course Path

Current and planned courses

01In Progress

Microcontroller Embedded C Programming: Absolute Beginners

Udemy

Certificate: Not earned yet

View course

A practical introduction to C programming for microcontroller-based systems, connecting fundamental programming concepts with memory, hardware peripherals, and embedded-development workflows.

Topics actually studied

  • C data types and variables
  • signed and unsigned values
  • literals and sizeof
  • arithmetic, relational, logical, and bitwise operators
  • implicit and explicit type casting
  • functions and function prototypes
  • header files and separate compilation
  • pointers and dereferencing
  • pointer arithmetic
  • arrays and strings
  • printf and scanf fundamentals
  • program build stages
  • Flash and SRAM fundamentals
  • .text, .data, and .bss memory sections
  • STM32CubeIDE basics
  • GPIO fundamentals
  • basic LED control
  • basic microcontroller clock concepts
02Planned

Embedded Systems Programming on ARM Cortex-M3/M4

Udemy

Certificate: Not earned yet

View course

A processor-focused course exploring the internal architecture and low-level programming of ARM Cortex-M3/M4 systems.

Planned topics

  • ARM Cortex-M3/M4 architecture
  • processor modes
  • core registers
  • memory maps and bus interfaces
  • stack organization
  • mixed C and assembly programming
  • interrupts and exceptions
  • NVIC configuration
  • fault handling
  • startup files
  • linker scripts
  • bare-metal build processes
  • context switching
  • SysTick and PendSV
  • basic task scheduling
03Planned

Mastering Microcontroller and Embedded Driver Development

Udemy

Certificate: Not earned yet

View course

A hands-on course focused on developing bare-metal STM32 peripheral drivers by working with microcontroller registers, clocks, interrupts, datasheets, and communication protocols.

Planned topics

  • STM32 datasheets and reference manuals
  • peripheral register programming
  • driver headers and API design
  • GPIO drivers
  • SPI drivers
  • I²C drivers
  • USART drivers
  • peripheral interrupts
  • vector tables and NVIC
  • AHB and APB buses
  • RCC and peripheral clocks
  • HSI, HSE, HCLK, PCLK, and PLL
  • baud-rate configuration
  • serial-protocol debugging
  • logic-analyzer measurements
  • driver testing and troubleshooting

Practical Evidence

Work completed so far

A record of the equipment used and experiments completed during the current Embedded C and STM32 work.

Hardware used so far

  • STM32F407G-DISC1
  • integrated ST-LINK programmer and debugger
  • breadboard
  • jumper wires
  • external LEDs
  • 330-ohm resistors
  • USB connection
  • STM32CubeIDE

Available for upcoming experiments

  • push buttons
  • buzzer
  • SSD1306 OLED display using I²C
  • additional resistors
  • ceramic capacitors
  • electrolytic capacitors
  • multimeter

Experiments completed

  • created and built basic C programs
  • separated functions into source and header files
  • examined compiled code and basic program-memory organization
  • configured GPIO output behavior
  • toggled an STM32 GPIO LED
  • connected and controlled an external LED using a current-limiting resistor
  • used the integrated ST-LINK interface for programming and debugging

Related Content

A foundation in practice