The original MSP430 course¶
The 2020 edition of this guide was organized around one free university video course: Intro to Embedded Systems Design with the MSP430FR2355 by the YouTube channel Digital Logic & Programming. It is a complete, lecture-style course on a Texas Instruments 16-bit microcontroller, and every video was still online when we checked in September 2026.
The main guide now uses the Raspberry Pi Pico 2 and STM32, because that is where the industry is. But this course remains an excellent way to see every concept from Phases 1 and 2 taught a second time on a different architecture, which is exactly how you learn what is universal and what is vendor-specific. If you have an MSP430FR2355 LaunchPad, or you learn best from lectures, work through it alongside Phase 2.
Below are the lectures the original guide linked, grouped by topic in the order the course teaches them. Tick them off like any other module.
Overview¶
- 1.1 Embedded Systems Overview
- 3.2 Computer Hardware
- Computer Software
- 4.1 MSP430 Hardware Overview
- MSP430 Software Overview
C on the MSP430¶
GPIO¶
Interrupts¶
- Overview and Basic Concepts
- Overview of the Interrupt Vector Table
- The Stack During an IRQ and Nested IRQs
- The Responsibility of the Developer When Using IRQs
- The IRQs on the MSP430FR2355
- Port Interrupts: Overview
- Reading a Switch Using a Port IRQ
- Changing Edge Sensitivity and Forgetting to Clear a Flag
- Interrupts Overview and Port Interrupt Example
Timers and PWM¶
- Timer Overflow Using ACLK
- Timer Overflow Using ACLK and 12-Bit Counter Length
- Timer Overflow Using SMCLK
- Timer Overflow Using SMCLK and a Divide-by-4 Prescaler
- Timer Compares
- Creating PWM Signals Using Timer Compares
- Timer Captures
UART¶
- Serial Communication Overview
- The UART Standard
- Configuring the UART Tx
- Configuring the Baud Rate
- Transmitting a Byte at 115200 Baud
- Transmitting a Byte at 9600 Baud
- Transmitting a Character to the Terminal
- Transmitting a String to the Terminal
- Transmitting a String with IRQs
- Configuring the UART Rx
- Receiving Characters from the Terminal
SPI¶
- SPI Overview and Implementation on the MSP430
- Sending a Byte as a SPI Master
- Sending a Packet Using UCTXIFG
- Sending a Packet Using STE/SS
- Receiving a Byte as a SPI Master
- SPI Slave Behavior
I2C¶
- What Is I2C and Why the Resistors?
- Basic Packet Structure
- Addressing Slave Registers
- Master Configuration on the MSP430FR2355
- Adafruit PCF8523 Real-Time Clock as an I2C Slave
- RTC to LaunchPad Connection and a Simple Probe
- Writing One Byte to an I2C Slave
- Writing a Register Address Plus 3 Bytes
- Reading One Byte from an I2C Slave
- Reading from a Specific Register Address
- I2C Slave Operation
ADC¶
- Overview of ADCs
- The MSP430 ADC and Configuration
- Reading Voltage with Conversion-Complete Polling
- Reading Voltage with a Conversion-Complete IRQ
- Reading Voltage with an IRQ and Low-Power Mode
Other complete free courses¶
If you want another full lecture course rather than the module-by-module approach of this guide:
- Modern Embedded Systems Programming by Miro Samek. Cortex-M from the instruction level up to state machines and RTOS design. Companion site at state-machine.com, code on GitHub.
- Embedded Systems: Shape the World by Jonathan Valvano and Ramesh Yerraballi, UT Austin, on edX. A university lab course on a TI Cortex-M4 LaunchPad, free to audit. Materials also on Valvano's site.
- Embedded Software and Hardware Architecture by University of Colorado Boulder on Coursera, free to audit. The 2020 guide linked individual lectures from this course; those links now redirect to the course page.
- Embedded System Engineering lectures by Phil Koopman, CMU. Not a beginner course, but the best free material on safety, quality, and real-time systems.