Introduction to Microcontrollers

This page describes the EEGR3233 Introduction to Microcontrollers class that was taught in the fall of 2018 at LeTourneau University. The class focused on the NXP KL43 microcontroller. This is a 32-bit microcontroller with an ARM Cortex-M0+ core. The FRDM-KL43Z board was used for the hands-on assignments. Programs were written in C using MCUXpresso.

Textbook: Embedded Systems Fundamentals with ARM Cortex-M based Microcontrollers, Alexander G. Dean, ARM Education Media, 2017.

Lectures: The class had 28 lectures of 80 minutes each. The lectures introduced the main peripherals of the microcontroller, interrupts, the DMA, a real-time operating system (FreeRTOS), and an introduction to assembly language programming. The material was structured as follows:

Introduction (2.5 lectures)


Interrupts (2 lectures)

DMA (2 lectures)

Introduction to FreeRTOS (4 lectures)


Analog-to-digital and digital-to-analog converters (2 lectures)

Serial communication

I2C (1 lecture)

USB (1 lecture)

Assembly language (2.5 lectures)

Lab assignments: All lab and prelab assignments have relied on the FRDM-KL43 board and the MCUXpresso software. Prelab assignments are hands-on homework assignments that are meant to provide additional programming experience. They are not always related to the lab assignments.

Lab 1: Introduction to MCUXpresso

Lab 2: Introduction to Program Debugging. Uses lcd_drive.c.

Lab 3: LCD and Console Functions. Prelab: LED control.

Lab 4: Nested Loops. Prelab: Testing pin connections.

Lab 5: Interrupts. Prelab: Event-driven LED control.

Lab 6: DMA. Prelab: LED control via DMA.

Lab 7: FreeRTOS. Prelab: Concurrent tasks.

Lab 8: Timers. Prelab: Mutex semaphores.

Lab 9: Coordinating Tasks. Uses i2cDrive.c.

Lab 10: Motor Control. Prelab: Pitch, roll, and yaw angles.

Lab 11: ADC and DAC. Prelab: Input capture.

Lab 12: Data Logging. Uses and USB demo files. The USB files are from the usb_vcom_lite example of the FRDM-KL43Z SDK and are under the BSD license. Among these files, virtual_com.c was adapted for this lab assignment.

Lab 13: I2C.