Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
Arm Community blogs
Arm Community blogs
Embedded and Microcontrollers blog Embedded C Programming with Arm Cortex-M Video Course
  • Blogs
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
More blogs in Arm Community blogs
  • AI blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded and Microcontrollers blog

  • Internet of Things (IoT) blog

  • Laptops and Desktops blog

  • Mobile, Graphics, and Gaming blog

  • Operating Systems blog

  • Servers and Cloud Computing blog

  • SoC Design and Simulation blog

  • Tools, Software and IDEs blog

Tags
  • Video
  • Embedded
  • Public Courses
  • Cortex-M
  • Debugger
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Embedded C Programming with Arm Cortex-M Video Course

Miro Samek
Miro Samek
June 4, 2014

I believe that the Arm Community could be interested in the "Embedded C Programming Course with Arm Cortex-M" video course, which I've been teaching for over a year on YouTube. The playlist for this course is available below.

Embedded Systems Programming Playlist on YouTube

Embedded Systems Programming Course on YouTube

The course starts from the beginning and is structured as a series of short, focused, hands-on lessons that teach you how to program Arm Cortex-M microcontrollers in C.

My goal is not just to teach C–other courses do it already quite well. But there are virtually no courses that would step down to the machine level and show you exactly what happens inside the Arm processor. This deeper understanding will allow you to use both the Arm processor and the C language more efficiently and with greater confidence. You will gain understanding not just what for your program does, but also how the C statements translate to machine instructions and how fast the processor can execute them.

What I believe is special about this "Modern Embedded Programming" course is that it shows exactly what happens inside an Arm Cortex-M microcontroller. Specifically, I use the IDE and the various views in the debugger, such as disassembly, registers, memory, variables, call stack, etc. to explain exactly what's happening and also what can go wrong. For example, in the lesson about functions and the stack, I show an example of a stack overflow. (Have you ever seen how an Arm CPU "executes" it's own interrupt table?) In the lesson about stdint.h and mixing integers in expressions I show examples of non-portable code and how it changes behavior between 32-Arm and 16-bit MSP430. In the last lesson about structures I show how Cortex-M3/M4 can handle misaligned data while Cortex-M0 can't, and so on.

Here is the list of the lessons released so far:

  • Lesson 0 ( 9:17): Getting Started  
  • Lesson 1 (17:06): Counting
  • Lesson 2 (11:00): Flow of Control
  • Lesson 3 (12:23): Variables and Pointers
  • Lesson 4 (16:45): Blinking the LED
  • Lesson 5 (14:30): Preprocessor and volatile
  • Lesson 6 (17:06): Bit-wise operators in C
  • Lesson 7 (15:22): Arrays and Pointer Arithmetic
  • Lesson 8 (17:06): Functions and the Stack
  • Lesson 9 (19:08): Modules, Recursion, AAPCS
  • Lesson 10 (27:42): Stack Overflow and Other Pitfalls of Functions
  • Lesson 11 (28:34): <stdint.h>, Endianness, Mixing Types in Expressions
  • Lesson 12 (32:11): Structures and CMSIS

I’d love to hear your comments about the course. Is there anything that you would like to see in the upcoming lessons? Do you see anything that you would teach differently? Or perhaps you have ideas for teaching specific subjects? Please share…

Watch more lessons

Anonymous
Parents
  • Abdul Sattar
    Abdul Sattar over 10 years ago

    Hi Dr. Miro Samek,

    I am learning very well from your embedded course. It would be helpful to me and others also if you could please add course for Interrupts and pointers to function in details. After the course 15 it has been almost 3 months but no new course been published. Since waiting too long astray from learning path. So please publish new lesson at your earliest. Thanks

    Abdul Sattar

    KHU South Korea

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
Comment
  • Abdul Sattar
    Abdul Sattar over 10 years ago

    Hi Dr. Miro Samek,

    I am learning very well from your embedded course. It would be helpful to me and others also if you could please add course for Interrupts and pointers to function in details. After the course 15 it has been almost 3 months but no new course been published. Since waiting too long astray from learning path. So please publish new lesson at your earliest. Thanks

    Abdul Sattar

    KHU South Korea

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
Children
No Data
Embedded and Microcontrollers blog
  • Formally verifying a floating-point division routine with Gappa – part 2

    Simon Tatham
    Simon Tatham
    A method of testing whether a numerical error analysis using Gappa really matches the code it is intended to describe.
    • September 4, 2025
  • Formally verifying a floating-point division routine with Gappa – part 1

    Simon Tatham
    Simon Tatham
    Learn the basics of using Gappa for numerical error analysis, using floating-point division in Arm machine code as a case study.
    • September 4, 2025
  • Adapting Kubernetes for high-performance IoT Edge deployments

    Alexandre Peixoto Ferreira
    Alexandre Peixoto Ferreira
    In this blog post, we address heterogeneity in IoT edge deployments using Kubernetes.
    • August 21, 2024