Packt

Bare-Metal Embedded C Programming

Packt

Bare-Metal Embedded C Programming

Included with Coursera PlusLearn more

Gain insight into a topic and learn the fundamentals.
Intermediate level

Recommended experience

1 week to complete
at 10 hours a week
Flexible schedule
Learn at your own pace
Gain insight into a topic and learn the fundamentals.
Intermediate level

Recommended experience

1 week to complete
at 10 hours a week
Flexible schedule
Learn at your own pace

What you'll learn

  • Decode microcontroller datasheets for precise firmware development

  • Master register manipulations for optimized Arm-based firmware

  • Navigate hardware documentation with confidence and write optimized code

Details to know

Shareable certificate

Add to your LinkedIn profile

Recently updated!

October 2026

Assessments

19 assignments

Taught in English

See how employees at top companies are mastering in-demand skills

 logos of Petrobras, TATA, Danone, Capgemini, P&G and L'Oreal

There are 18 modules in this course

This module equips learners with the foundational tools and knowledge needed for firmware development. It covers setting up OpenOCD, understanding microcontroller documentation, and interacting with hardware registers directly. By the end, students will be able to configure their development environment and interpret technical specifications.

What's included

1 video3 readings1 assignment

This module covers the fundamentals of bare-metal programming, focusing on constructing peripheral registers from memory addresses, configuring microcontroller peripherals, and manipulating GPIO registers. Learners will gain hands-on skills in using assembly language, understanding clock gating, and working with volatile variables in embedded systems.

What's included

1 video8 readings1 assignment

This module provides an in-depth look at the firmware build process using the GNU Arm Toolchain, covering essential tools, compiler flags, and techniques for optimizing embedded systems. Learners will explore how to analyze and manage firmware size and understand the role of OpenOCD in programming and debugging microcontrollers.

What's included

1 video5 readings1 assignment

This module explores the essential concepts of microcontroller memory models, linker scripts, and startup files. Learners will gain an understanding of how memory is mapped and initialized in embedded systems, and how to configure linker scripts to manage memory regions effectively.

What's included

1 video10 readings1 assignment

This module covers the fundamental concepts of the 'make' build system, including how to write and structure Makefiles, understand target-prerequisite-recipe relationships, and optimize build processes for firmware development. Learners will gain practical skills in automating software compilation and linking.

What's included

1 video3 readings1 assignment

This module covers the fundamentals of the CMSIS standard, including how to define peripheral registers using C structures, understand key CMSIS components, and integrate CMSIS files into a project for improved code portability and efficiency.

What's included

1 video4 readings1 assignment

This module provides an in-depth look at the General-Purpose Input/Output (GPIO) peripheral in STM32 microcontrollers, covering register configurations, alternate functions, and output driver implementation. Learners will gain practical knowledge on how to interface and control microcontroller pins effectively.

What's included

1 video3 readings1 assignment

This module provides an in-depth look at the SysTick timer, covering its functionality, configuration, and driver development for Arm Cortex-M microcontrollers. Learners will gain practical knowledge on implementing timing control and system monitoring in embedded systems.

What's included

1 video2 readings1 assignment

This module explores the functionality of STM32 general-purpose timers, their configuration through prescaling, and their use in real-time applications such as delay generation and event triggering. Learners will gain hands-on insight into timer operations and driver development for embedded systems.

What's included

1 video3 readings1 assignment

This module provides a comprehensive overview of the UART protocol, including its operation, implementation using STM32 registers, and practical applications in embedded systems. Learners will gain hands-on knowledge of how to develop UART drivers and understand its role in microcontroller communication.

What's included

1 video5 readings1 assignment

This module provides an in-depth look at analog-to-digital converters (ADCs), focusing on their operation, configuration, and integration within STM32F4 systems. Learners will gain practical knowledge on how to set up ADC channels, understand the role of VREF, and work with key ADC registers and GPIO pins for analog signal acquisition.

What's included

1 video4 readings1 assignment

This module provides a comprehensive overview of the SPI protocol, including its master-slave architecture, clock phase configurations, and practical implementation techniques. Learners will gain hands-on experience with STM32 register configuration and bare-metal driver development for embedded systems communication.

What's included

1 video5 readings1 assignment

This module provides a deep dive into the I2C communication protocol, covering its operation, addressing methods, and implementation in STM32 microcontrollers. Learners will gain hands-on experience configuring I2C peripherals and writing functions for data transmission and reception in embedded systems.

What's included

1 video4 readings1 assignment

This module covers the implementation of external interrupts and events in STM32 microcontrollers, including NVIC and IVT configuration, EXTI register analysis, and the role of ISRs in real-time event handling. Learners will gain practical skills in configuring interrupt-driven systems and improving communication between microcontrollers and peripherals.

What's included

1 video4 readings1 assignment

This module provides an in-depth exploration of the Real-Time Clock (RTC) peripheral, focusing on its configuration, register analysis, and driver development. Learners will gain hands-on knowledge of how to implement accurate timekeeping in embedded systems using STM32 microcontrollers. The module also covers practical aspects like BCD encoding and signal output control.

What's included

1 video5 readings1 assignment

This module explores the fundamentals of the Independent Watchdog (IWDG) timer and its role in enhancing system reliability. It covers configuration, register setup, driver development, and the use of external WDTs for added flexibility and redundancy in embedded systems. Learners will gain practical skills in implementing watchdog timers for fault tolerance.

What's included

1 video3 readings1 assignment

This module explores the concept of Direct Memory Access (DMA) in embedded systems, focusing on its role in optimizing data transfers and reducing CPU load. It covers practical implementation techniques, register configurations, and interrupt handling in real-world scenarios like audio streaming. Learners will gain hands-on knowledge of how to develop and manage DMA-driven systems.

What's included

1 video5 readings1 assignment

This module explores techniques for optimizing power consumption in embedded systems, with a focus on STM32F4 low-power modes, wake-up triggers, and driver development. Learners will gain practical knowledge on implementing power-saving strategies to extend battery life and improve system efficiency.

What's included

1 video4 readings2 assignments

Instructor

Packt - Course Instructors
Packt
2,451 Courses738,456 learners

Offered by

Packt

Why people choose Coursera for their career

Felipe M.

Learner since 2018
"To be able to take courses at my own pace and rhythm has been an amazing experience. I can learn whenever it fits my schedule and mood."

Jennifer J.

Learner since 2020
"I directly applied the concepts and skills I learned from my courses to an exciting new project at work."

Larry W.

Learner since 2021
"When I need courses on topics that my university doesn't offer, Coursera is one of the best places to go."

Chaitanya A.

"Learning isn't just about being better at your job: it's so much more than that. Coursera allows me to learn without limits."

Frequently asked questions