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

   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.

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

   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.

   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.

   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.

   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)

   Lecture 1: What Is This Course All About?

   Lecture 2: Course Introduction

   Lecture 3: What Is a Microcontroller?

   Lecture 4: What Is an Embedded System?

   Lecture 5: What Is a Program?

   Lecture 6: What Is an Integrated Development Environment?

   Lecture 7: ACTION: How Do I Get Started?

   Lecture 8: Wrap Up

   Lecture 9: Quiz 1: Getting Started

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

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

   Lecture 11: ACTION: What Is Digital Logic?

   Lecture 12: Wrap Up

   Lecture 13: Quiz:  Binary Numbers and Digital Logic

   Lecture 14: BONUS:  Additional Examples

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

   Lecture 15: What Is Inside a Microcontroller?

   Lecture 16: What Is Program Memory?

   Lecture 17: What Is Data Memory?

   Lecture 18: What Is a Peripheral?

   Lecture 19: Wrap Up

   Lecture 20: Course Launches September 28th, 2015

Section 4 - Loops in the C Programming Language

   Lecture 21: ACTION: What Is a FOR Loop?

   Lecture 22: What Is a Flow Chart?

   Lecture 23: ACTION: What Is a WHILE Loop?

   Lecture 24: Loops Wrap up

   Lecture 25: Quiz: Loops in the C Programming Language

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

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

   Lecture 28: BONUS: What Are Nested Loops?

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

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

   Lecture 30: What Is a Digital Input?

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

   Lecture 32: ACTION: What Is the IF Statement?

   Lecture 33: ACTION: What Are Relational Operators?

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

   Lecture 35: Digital Inputs Wrap Up

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

   Lecture 37: BONUS: What Are BREAK and CONTINUE?

Section 6 - Introduction to Timer Peripherals

   Lecture 38: What Is a Timer?

   Lecture 39: What Can Timers Count?

   Lecture 40: Introduction to Timers Wrap Up

   Lecture 41: Quiz: Introduction to Timers

Section 7 - Introduction to the Watchdog Timer Peripheral

   Lecture 42: What Is a Watchdog Timer?

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

   Lecture 44: Watchdog Timer Peripheral Wrap Up

   Lecture 45: Quiz: Watchdog Timer Peripheral

Section 8 - Introduction to the General Purpose Timer

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

   Lecture 47: Quiz: General Purpose Timers

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

Section 9 - Advanced Features of General Purpose Timers

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

   Lecture 50: Quiz: Advanced Features of General Purpose Timers

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

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

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

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

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

Section 10 - Using Functions to Improve Your Microcontroller Program

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

   Lecture 57: Quiz: Functions

Section 11 - Introduction to Interrupt Service Routines

   Lecture 58: ACTION: What Are Interrupt Service Routines?

   Lecture 59: Quiz: Interrupt Service Routines

Section 12 - Introduction to Low Power Modes

   Lecture 60: What Is Low-Power Mode?

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

   Lecture 62: Low Power Mode Wrap Up

   Lecture 63: Quiz: Low-Power Modes

Section 13 - Interrupt Service Routines for Digital Inputs

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

Section 14 - Serial Communication Interfaces

   Lecture 65: What Is Serial Communication?

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

   Lecture 67: Serial Communication Wrap Up

   Lecture 68: Quiz: Serial Communication

Section 15 - Analog-to-Digital Converters

   Lecture 69: ACTION: What Is an Analog Value?

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

   Lecture 71: Analog-to-Digital Converter Wrap Up

   Lecture 72: Quiz: Analog-to-Digital Converter

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

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

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

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

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

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

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

   Lecture 79: Liquid Crystal Display Wrap Up

   Lecture 80: Quiz: Liquid Crystal Display

Section 17 - Final Project

   Lecture 81: ACTION: Final Project

Section 18 - Wrap Up

   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.