Yifeng Zhu
Embedded Systems with ARM Cortex-M Microcontrollers
in Assembly Language and C (Third Edition)
ISBN-13: 978-0-9826926-6-0, Publisher: E-Man Press LLC; 3rd edition (July 2017)
Available from Amazon
Home / Introduction / Adoptions / Instructor Site / Sample Labs / Lab Kit / Tutorials / FAQ

  • Presentation slides of ST 2018 Webinar (pdf)
  • Presentation slides of ASEE 2016 Embedded System Workshop (pdf)

  • Only instructors are given access to lecture slides, excercise and lab solutions, and sample exams.
  • To register for access, please email me from your school email (not a free email service).
  • Information for bookstores for wholesale distribution: Ingram Content Group
  • Request a desk copy: email me with the following information
    • First name:
    • Last name:
    • School official email :
    • School:
    • Official course web page:
    • Course number and name:

How to teach by using the book?

  • Sample Syllabus: University of Maine, Auburn University, San Jose State University, Florida International University, College of New Jersey
  • We have three 50-minutue lectures and one 3-hour lab in each week.
  • Each week we have four 3-hour lab sessions and each student signs up one of them. The lab description is usually handed out and briefly explained on Friday.
  • Each lab assignment has a pre-lab component, lab demo, and a post-lab component. (Lab grading rubrics.pdf)
  • Students have one week to complete a lab. On each lab session, TA will grade the lab-demo and post-lab of the last lab assignment and also the pre-lab of the current lab assignment.
  • Students are required to buy the STM32L4 (Cortex-M4 + DSP + FPU) lab-in-a-box. Therefore, they can continue to work on lab at home if they cannot complete it during the lab session.
  • Before the semester starts, email students and ask them to download the free ARM Keil development. Here is the installation tutorial: Keil Installation Tutorial

The following provides a sample teaching schedule (14-week semester).

Lecture Lab

Lec. 1: ARM Intro & Syllabus
Lec. 2: Keil Demo, GPIO push-pull, open-drain
Lec. 3: LCD Driver

1. Interfacing Push-button and LED in C
Reading: Ch.14 GPIO

Lec. 4: Two’s Complement (TC), overflow/carry
Lec. 5: TC simplifies hardware
Lec. 6: GPIO, push-pull, open-drain
2. LCD Display Driver in C
Reading: Ch.17 LCD
Lec. 7: ARM ISA overview
Lec. 8: Arithmetic and logic
Lec. 9: Load/store, big/little endian
3. Interfacing Keypad in C
Reading: Ch.14 GPIO
Lec. 10: Load/store, addressing modes
Lec. 11: Branch instructions
Lec. 12: Conditional execution
4. Stepper Motor Control in C
Reading: Ch.16 Motor
Lec. 13: Subroutine (BL, BX LR), passing arguments in registers
Lec. 14: Subroutines, passing arguments in stack
Lec. 15: Recursive functions (preserve environment via stack)
5. Stepper Motor Control in Assembly
Reading: Ch.16 Motor
Lec. 16: Midterm Exam 1
Lec. 17: Interrupt, stacking/unstacking
Lec. 18: Enable/disable interrupt, priority
6. SysTick in C
Reading: Ch.11 Interrupt
Lec. 19: Demo of external interrupt (Push button and light up LED)
Lec. 20: Timer, PWM
Lec. 21: Timer, input capture
7. Timer PWM Timer in Assembly
Reading: Ch.15 Timer
Lec. 22: C calls assembly codes
Lec. 23: Assembly calls C codes
Lec. 24: Static variables
8. Timer Input Capture: Interfacing with Ultrasonic Distance Measurement in C
Reading: Ch.15 Timer
Lec. 25: Volatile variables
Lec. 26: Structured assembly programming
Lec. 27: Structured assembly programming
9. Timer Input Capture: Interfacing with Ultrasonic Distance Measurement in Assembly
Reading: Ch.15 Timer
Lec. 28: Midterm Exam 2
Lec. 29: ADC
Lec. 30: DMA
10. Analog-to-Digital Converter (ADC)
Reading: Ch.20 ADC
Lec. 31: DAC
Lec. 32: 64-bit operations
Lec. 33: 64-bit operations
11. Digital-to-Analog Converter (DAC)
Reading: Ch.21 DAC
Lec. 34: Fixed-point numbers
Lec. 35: Fixed-point numbers
Lec. 36: Floating-point numbers
12. Music Synthesizing (DAC)
Reading: Ch.21 DAC
Lec. 37: Floating-point numbers
Lec. 38: USART
Lec. 39: SPI and I2C
Bonus lab:
RGB LED strip, capacitive touch sensing, or USB HID
Lec. 40: USB
Lec. 41: Multitasking (context switch)
Lec. 42: Course Review