Intro to Microcontrollers and C Programming
Microcontroller classes
An Intro to Microcontrollers and the C Programming Language

Shorten your learning curve for the TI MSP430 and Code Composer Studio integrated development environment. This course is devised and presented by Valparaiso University's College of Engineering, one the top 30 in the US. Use code 24valpo for class registration fee discount.

Buy Lab Kit   Register for Class  About the Course
design challenge tile
MSP430FR6989  Launchpad, Red LED  (x4), Yellow LED  (x2), Green LED  (x2), Jumper Wires  (male to female), Jumper Wires  (male to male), Jumper Wires  (female to female), Pushbutton Switch  (x2), 470 Ohm Resistor  (x4), PotentiometerDAC , and Breadboard
More Info

It’s NOT too late to sign up! | This is a work at your own pace class.

An Introduction to Microcontrollers and the C Programming Language

Register for the Class Now!



Welcome to Valparaiso University’s next online class, Introduction to Microcontrollers and the C Programming Language.  The course will use the same mixed-mode format we use in our lecture-laboratories at Valparaiso University.  An emphasis is placed on enabling students to develop their skills by continually practicing with the tools real developers use every day.  A few short videos will kick off each of the sections followed by the step-by-step instructions to get you up and running.  And, if you have any questions along the way, our embedded system’s team will be here to help.  That’s what we’re for – to make you successful.


Benefits of Class

image  The course is laboratory based.  Almost every lecture and section of the course leads directly to a hands-on laboratory assignment.  The more practice you get using the “real world” Texas Instruments hardware and software the more proficient you will be.

image  The course does not waste your time.  From the very beginning, we jump right in to your first laboratory assignment – Let’s Get Started.

image  The course is modular in nature.  Are you new to the world of microcontrollers?  Great!  Start at the beginning, and we’ll teach you everything you need to know.  Do you have some background in microcontrollers but want to learn more?  Fantastic!  You can pick and choose the modules that you need.

image  The course is packed with information.  From the beginnings of the C programming language to advanced microcontroller peripherals, the course teaches you all of the building blocks you would need to build your own electronic systems.

image  We use lots and lots of examples.  We take you step-by-step through the lessons – each time providing sample code and documentation to make sure you are supported through the course.

image  We are here to help.  We are educators with a singular focus of providing a meaningful experience for our students.  And, while we cannot do the work for you, we are willing to work WITH you help you succeed.


Course Breakdown

Section 1 - How Do I Get Started? (Free Preview Available at Udemy)

image  Lecture 1: What Is This Course All About?

image  Lecture 2: Course Introduction

image  Lecture 3: What Is a Microcontroller?

image  Lecture 4: What Is an Embedded System?

image  Lecture 5: What Is a Program?

image  Lecture 6: What Is an Integrated Development Environment?

image  Lecture 7: ACTION: How Do I Get Started?

image  Lecture 8: Wrap Up

image  Lecture 9: Quiz 1: Getting Started

Section 2 - Binary Numbers and Digital Logic (Free Preview Available at Udemy)

image  Lecture 10: ACTION: What Are Binary and Hexadecimal Numbers?

image  Lecture 11: ACTION: What Is Digital Logic?

image  Lecture 12: Wrap Up

image  Lecture 13: Quiz:  Binary Numbers and Digital Logic

image  Lecture 14: BONUS:  Additional Examples

Section 3 - What's Inside of a Microcontroller (Free Preview Available at Udemy)

image  Lecture 15: What Is Inside a Microcontroller?

image  Lecture 16: What Is Program Memory?

image  Lecture 17: What Is Data Memory?

image  Lecture 18: What Is a Peripheral?

image  Lecture 19: Wrap Up

image  Lecture 20: Course Launches September 28th, 2015

Section 4 - Loops in the C Programming Language

image  Lecture 21: ACTION: What Is a FOR Loop?

image  Lecture 22: What Is a Flow Chart?

image  Lecture 23: ACTION: What Is a WHILE Loop?

image  Lecture 24: Loops Wrap up

image  Lecture 25: Quiz: Loops in the C Programming Language

image  Lecture 26: BONUS: Are FOR Loops and WHILE Loops Really the Same Thing?

image  Lecture 27: BONUS: What Are the Different C Variable Types?

image  Lecture 28: BONUS: What Are Nested Loops?

image  Lecture 29: BONUS: What Are the C Shorthand Operators?

Section 5 - Digital Inputs, the P1.1 Button, and the IF Statement

image  Lecture 30: What Is a Digital Input?

image  Lecture 31: ACTION: What Is the P1.1 Push Button?

image  Lecture 32: ACTION: What Is the IF Statement?

image  Lecture 33: ACTION: What Are Relational Operators?

image  Lecture 34: ACTION: How Do I Use More Push Buttons and LEDs?

image  Lecture 35: Digital Inputs Wrap Up

image  Lecture 36: Quiz: Digital Inputs, Push Buttons, and the IF Statement

image  Lecture 37: BONUS: What Are BREAK and CONTINUE?

Section 6 - Introduction to Timer Peripherals

image  Lecture 38: What Is a Timer?

image  Lecture 39: What Can Timers Count?

image  Lecture 40: Introduction to Timers Wrap Up

image  Lecture 41: Quiz: Introduction to Timers

Section 7 - Introduction to the Watchdog Timer Peripheral

image  Lecture 42: What Is a Watchdog Timer?

image  Lecture 43: ACTION: How Do I Use the Watchdog Timer?

image  Lecture 44: Watchdog Timer Peripheral Wrap Up

image  Lecture 45: Quiz: Watchdog Timer Peripheral

Section 8 - Introduction to the General Purpose Timer

image  Lecture 46: ACTION: How Do I Use a General Purpose Timer?

image  Lecture 47: Quiz: General Purpose Timers

image  Lecture 48: BONUS: How Can I Pet the Watchdog with a General Purpose Timer?

Section 9 - Advanced Features of General Purpose Timers

image  Lecture 49: ACTION: How Do I Use Two General Purpose Timers to Count at the Same Time?

image  Lecture 50: Quiz: Advanced Features of General Purpose Timers

image  Lecture 51: BONUS: How Do I Use Semi-Automatic Pulse Width Modulation (PWM) Mode?

image  Lecture 52: BONUS: How Do I Use Automatic PWM Mode?

image  Lecture 53: BONUS: How Do I Use One Timer to Create Multiple Frequency Outputs?

image  Lecture 54: BONUS: How Do I Count Up and Down with Dead Time?

image  Lecture 55: BONUS: How Can I Count Pulses with a General Purpose Timer?

Section 10 - Using Functions to Improve Your Microcontroller Program

image  Lecture 56: ACTION: How Do Functions Improve Your Program?

image  Lecture 57: Quiz: Functions

Section 11 - Introduction to Interrupt Service Routines

image  Lecture 58: ACTION: What Are Interrupt Service Routines?

image  Lecture 59: Quiz: Interrupt Service Routines

Section 12 - Introduction to Low Power Modes

image  Lecture 60: What Is Low-Power Mode?

image  Lecture 61: ACTION: How Do I Use Low-Power Mode?

image  Lecture 62: Low Power Mode Wrap Up

image  Lecture 63: Quiz: Low-Power Modes

Section 13 - Interrupt Service Routines for Digital Inputs

image  Lecture 64: ACTION: How Can I Use Interrupts with a Digital Input?

Section 14 - Serial Communication Interfaces

image  Lecture 65: What Is Serial Communication?

image  Lecture 66: ACTION: How Can I Use a UART to Talk to Another Microcontroller?

image  Lecture 67: Serial Communication Wrap Up

image  Lecture 68: Quiz: Serial Communication

Section 15 - Analog-to-Digital Converters

image  Lecture 69: ACTION: What Is an Analog Value?

image  Lecture 70: ACTION: How Do I Use an Analog-to-Digital Converter Peripheral?

image  Lecture 71: Analog-to-Digital Converter Wrap Up

image  Lecture 72: Quiz: Analog-to-Digital Converter

Section 16 - Introduction to the Liquid Crystal Display (LCD)

image  Lecture 73: ACTION: How Can I Use the LCD on the MSP430FR6989 Launchpad?

image  Lecture 74: ACTION: How Do I Display a Short Word on the LCD?

image  Lecture 75: ACTION: What Is ASCII and Why Is It Important?

image  Lecture 76: ACTION: How Do I Create a Scrolling Message on the LCD?

image  Lecture 77: ACTION: How Do I Display Numbers on the LCD?

image  Lecture 78: ACTION: How Do I Display Symbols on the LCD?

image  Lecture 79: Liquid Crystal Display Wrap Up

image  Lecture 80: Quiz: Liquid Crystal Display

Section 17 - Final Project

image  Lecture 81: ACTION: Final Project

Section 18 - Wrap Up

image  Lecture 83: Final Words and Sources of Additional Help


Instructor Bio


Mark M. Budnik is the Electrical and Computer Engineering Department Chair and the Paul and Cleo Brandt Professor of Engineering at Valparaiso University.  He received his bachelor of science degree in electrical engineering from the University of Illinois and his master of science and doctoral degrees in electrical engineering from Purdue University.

Prior to joining the faculty at Valparaiso University in 2006, Mark worked in the semiconductor industry, culminating as a Staff Engineer and the Director of White Goods and Motor Control at Hitachi Semiconductor.  In these roles, he had a unique opportunity to work closely with a diverse customer base to identify and establish a number of best practices in embedded systems education.

In his career, he received multiple educational awards from academia and industry including ST Microelectronics, National Semiconductor, Hitachi Semiconductor, Valparaiso University, and the American Society for Engineering Education (ASEE).  Most recently, Mark was an ASEE Section Outstanding Teacher of the Year and a finalist for the 2015 ASEE National Outstanding Teaching Award.

Mark is the author of more than fifty book chapters, journal articles, and conference proceedings and the recipient of five best paper/presentation awards.  He is a Senior Member of the IEEE and a Fellow of the International Symposium on Quality Electronic Design.