Project names that end with asm are written in ARM assembly language. The remaining projects are written in C99. Refer to the book for more details. All projects can be run in either Keil uVision 5 or Texas Instruments' Code Composer Studio.

August 18, 2019

Keil uVision Lab for the TI MSP432 Board

This hands-on lab demonstrates various examples with the TI MSP432 Family processors and Keil µVision IDE. The Blinky, RTX-Blinky, LoPower and DSP Sine examples are included in the APNT_276.ZIP file below. All examples are compliant to Cortex Microcontroller Software Interface Standard (CMSIS v4.5.0). Serial Wire Viewer trace, memory reads and writes and the RTX Kernel Awareness Viewer using the uVision debugging tools are shown. Go to ARM Application Note 276


Volume 1 Programs

 Printf_UART_MSP432 
 
 Program 2.1 
 
 Virtual COM port through debugger USB. 
 
 InputOutput_MSP432 
 InputOutput_MSP432asm 
 Program 4.1 
 
 Functional abstraction of the switches and LED on the LaunchPad. 
 Switches include internal pull-up resistors. 
 
 Switch_MSP432 
 Switch_MSP432asm 
 Program 4.2 
 
 Interface of a positive logic switch on P1.5.
 Switches include an external pull-down resistor. 
 
 SSR_MSP432 
 SSR_MSP432asm 
 Program 4.3 
 Example 4.2 
 Interface of a positive logic output on P2.2. 
 Uses abstraction to make the software easy to use. 
 
 Squarewaves_MSP432 
 Squarewaves_MSP432asm 
 Program 4.4 
 Example 4.1 
 Generate two out of phase square waves on P2.2 and P2.1. 
 Uses abstraction to make the software easy to use. 
 
 GPIO_MSP432 
 GPIO_MSP432asm 
 Program 4.5 
 Example 4.3 
 Generate 5,6,10,9 on Port 4. 
 Uses abstraction to make the software easy to use. 
 
 ClockSystem_MSP432 
 ClockSystem_MSP432asm 
 Program 4.6 
 
 Functions to allow execution at 32kHz or 48 MHz.
 Trade-off between execution speed and electrical power. 
 
 SysTick_MSP432 
 SysTick_MSP432asm 
 Program 4.7 
 
 Use the SysTick module to wait designated time. 
 Uses busy wait synchronization. 
 
 Scanf_UART_MSP432 
 
 Program 4.9 
 
 Virtual COM port through debugger USB. 
 BUG: scanf on CCS looses the first character. 
 
 ProfileSqrt_MSP432 
 
 Program 4.12 
 
 Measurement of dynamic efficiency. 
 Uses SysTick and an output pin to profile execution speed. 
 
 ProfileFact_MSP432 
 
 Program 5.20 
 
 Measurement of dynamic efficiency. 
 Uses SysTick to profile execution speed. 
 
 PointerTrafficLight_MSP432 
 PointerTrafficLight_MSP432asm 
 Program 6.8 
 Example 6.4 
 Traffic light system with two sensors and six lights. 
 Moore Finite State Machine with pointers. 
 
 MealyEngineControl_MSP432_MSP432 
 MealyEngineControl_MSP432asm 
 Program 6.9 
 
 Electronic engine controller with one input and two outputs. 
 Mealy Finite State Machine with pointers. 
 
 HeapFixedBlock_MSP432 
 HeapFixedBlock_MSP432asm 
 Programs 6.10 
 6.11, 6.12, 6.13 
 Functions to allocate and release memory blocks. 
 Fixed size blocks using linked lists
 
 LLFifo_MSP432 
 LLFifo_MSP432asm 
 Programs 6.15 
 6.16, 6.17 
 First in first out queue
 Uses linked lists and HeapFixedBlock. 
 
 LinearInterpolation_4C123 
 LinearInterpolation_4C123asm 
 Program 6.22 
 
 Fixed-point sin function. 
 Uses a table and linear interpolation. 
 
 UART_MSP432 
 UART_MSP432asm 
 Program 8.1 
 
 Device driver functions that implement serial I/O
 Uses busy-wait synchronization. 
 
 Nokia5110_MSP432 
 
 Section 8.4 
 
 Device driver functions that interface a Nokia 5110 LCD
 Uses SPI and busy-wait synchronization. 
 
 EdgeInterrupt_MSP432 
 
 Program 9.4 
 
 Edge triggered interrupt on P1.1 switch. 
 Real-time processing using interrupt synchronization. 
 
 TwoButtonVector_MSP432 
 
 Program 9.5 
 Example 9.1 
 Edge triggered interrupt on P5.3 and P6.3 switches. 
 Real-time processing using interrupt synchronization. 
 
 TwoButtonPoll_MSP432 
 
 Program 9.6 
 Example 9.1 
 Edge triggered interrupt on P6.2 and P6.3 switches. 
 Real-time processing using interrupt synchronization. 
 
 PeriodicSysTickInts_MSP432 
 
 Program 9.7 
 Section 9.6 
 Periodic interrupt using SysTick
 Real-time processing using interrupt synchronization. 
 
 PeriodicTimerA0Ints_MSP432 
 
 Program 9.8 
 Section 9.7 
 Periodic interrupt using TimerA
 Real-time processing using interrupt synchronization. 
 
 Profile_MSP432 
 
 Program 9.13 
 Section 9.9 
 Profile multi-threaded system. 
 Using both SysTick and TimerA interrupts. 
 
 ADCSWTrigger_MSP432 
 
 Program 10.2 
 Program 10.3 
 14-bit ADC sampling of P4.7. 
 Using software start and busy-wait. 
 
 ADC_Resolution_MSP432 
 
 Section 10.4.2 
 Figure 10.13 
 Repeated measurement to assess ADC resolution
 Using 512-point averaging filter. 
 
 FIFO_MSP432 
 
 Program 11.5 
 Section 11.3 
 First in first out queue. 
 Using both pointers and indexed addressing. 
 
 UARTInts_MSP432 
  
 Program 11.6 
 
 Device driver functions that implement serial I/O
 Uses interrupt synchronization and two FIFO queues. 
 


Volume 2 Programs

 PortMapping_MSP432 
 
 Program 2.1 
 
 Port mapping is used to map the Timer0A CCR0 function to P2.7. 
 
 InputOutput_MSP432 
 
 Program 2.7 
 Program 2.8 
 
 A set of functions using P1.4,P1.1 as inputs and P2.2-0 as outputs. 
 A friendly set of functions using P1.4,P1.1 as inputs and P2.2-4 as outputs. 
 SSR_MSP432 
 
 Program 2.9 
 
 A set of functions using P2.3 as an output. 
 
 Switch_MSP432 
 
 Program 2.10 
 
 A set of functions that interface an input switch to P1.5. 
 
 ClockSystem_MSP432 
 
 Program 2.11 
 
 A set of functions that set the clock system to the DCO,LFEXT or HFEXT bus clock. 
 
 Systick_MSP432 
 
 Program 2.12 
 
 Timer functions that implement a time delay. 
 
 GPIO_MSP432 
 
 Program 2.13 
 
 C software for the stepper motor system. 
 
 TableLineTracker_MSP432 
 
 Program 3.1 
 
 Table implementation of a Moore FSM. 
 
 PointerLineTracker_MSP432 
 
 Program 3.2 
 
 Pointer implementation of a Moore FSM. 
 
 FIFO_MSP432 
 
 Program 3.7 
 Program 3.8 
 Program 3.9 
 Program 3.10 
 
 Two-pointer implementation of a FIFO. 
 Implementation of a two-index FIFO. The size must be a power of two. 
 Two-pointer macro implementation of a FIFO. 
 Macro implementation of a two-index FIFO. The size must be a power of two. 
 
 HeapFixedBlock_MSP432 
 
 Program 3.11 
 
 Fixed-size memory manager implementing a heap. 
 
 ProfileSqrt_MSP432 
 
 Program 3.16 
 Program 3.17 
 Program 3.18 
 Program 3.19 
 Program 3.20 
 
 Profiling of a sqrt function. 
 
 LCD_MSP432 
 
 Program 4.2 
 Program 4.3 
 
 LCD driver based on the HD44780 controller. 
 
 Stepper_MSP432 
 
 Program 4.4 
 Program 4.5 
 Program 4.6 
 
 Stepper motor driver, double circular linked list . 
 
 UART_MSP432 
 
 Program 4.10 
 
 Device driver functions that implement serial I/O. 
 
 MatrixKeypad_MSP432 
 
 Program 4.11 
 Program 4.12 
 
 Scanning software for a matrix keyboard. 
 
 EdgeInterrupt_MSP432 
 
 Program 5.6 
 
 Edge-triggered interrupts that count falling edges of P1.1 and P1.4. 
 
 TwoButtonVector_MSP432 
 
 Program 5.7 
 
 Edge-triggered interrupts with vectored interrupts. 
 
 TwoButtonPoll_MSP432 
 
 Program 5.8 
 
 Edge-triggered interrupts with polled interrupts. 
 
 UARTint_MSP432 
 
 Program 5.9 
 
 Interrupt-driven device driver for the UART uses two software FIFOs to buffer data. 
 
 PeriodicSysTickInts_MSP432 
 
 Program 5.10 
 
 Implementation of a periodic interrupt using SysTick. 
 
 MatrixKeypadPeriodic_MSP432 
 
 Program 5.11 
 
 Periodic polling interface of a scanned keyboard. 
 
 InputCapture_MSP432 
 
 Program 6.1 
 
 Counting interrupt using input capture. 
 
 PeriodMeasure_MSP432 
 
 Program 6.2 
 
 16-bit period measurement on P7.3. 
 
 PeriodicTimerA0Ints_MSP432 
 PeriodicTimerA1Ints_MSP432 
 
 Program 6.7 
 
 Implementation of a periodic interrupt using TimerA0 and TimerA1. 
 
 TimerA0PWM_MSP432 
 
 Program 6.8 
 
 Software to generate a PWM output using Timer A0. 
 
 FreqMeasure_MSP432 
 
 Program 6.10 
 
 Software to measure frequency with a resolution of 100 Hz. 
 
 MAX5353_MSP432 
 
 Program 7.2 
 
 Functions to initialize and to send data to the DAC using the SSI. 
 
 MAX1246_MSP432 
 
 Program 7.3 
 
 Functions to initialize and to receive data from the ADC using the SSI. 
 
 74HC595_MSP432
 74HC165_MSP432 
 
 Program 7.4 
 
 Software to control an output parallel port expanded using the SSI. 
   Software to control an input parallel port expanded using the SSI. 
 
 I2C_MSP432 
 
 Program 7.5 
 Program 7.6 
 Program 7.7 
 
 Functions to use I2C. 
 
 PWMSine_MSP432 
 
 Program 8.7 
 
 Software for PWM DAC creating a 1 kHz sine wave. 
 
 ADCSWTrigger_MSP432 
 ADCTA0Trigger_MSP432 
 ADC_Resolution_MSP432 
 ADCSWTriggerTwoChan_MSP432 
 
 Program 8.8 
 
 Software to sample from the ADC. 
 
 LowPower_MSP432 
 
 Program 9.1 
 Program 9.2 
 
 Software to put the processor into deep sleep (LPM3.5). 
 
 ESP8266_MSP432 
 
 Program 11.1 
 
 Software for fecthing weather data from the internet using an ESP8266 wifi module.