Tiva Lab 01: Blinking LEDs
- Learn how to create a new C project using Keil lDE for TI Tiva LaunchPad Boards
- Learn how to use #define statements to simplify or clarify the code
- Learn how to config the GPIO for simple output pins
- Learn how to use bit-wise operators to set and clean specific bits
Required Reading Material
- Lesson 07: Create an ARM C Application with Keil μVision MDK-ARM
- Lesson 09: GPIO Ports and Configurations
- Set, Clear, Toggle and Check Bit Value in C
- Polling Method in Embedded Programming
The Tiva launchPad has rows of connectors along both sides that are used to connect to several electronic devices and plug-in 'shields' that extend its capability. The EK-TM4C123GXL LaunchPad has a single RGB LED on the board, and the EK-TM4C1294XL LaunchPad has four LEDs on the board. Those can be used on your embedded applications. When you first time connects the board to a USB plug, the onboard LEDs maybe already blink. That is because the boards are generally shipped with the Blink sketch pre-installed.
In this lab, we will reprogram the Tiva board with our Blink code and then change the rate at which it blinks.
Please follow Lesson 04: Operations and Operators to learn how to set up the Keil μVision IDE, create a new project, download and debug the code.
Circuit / Schematic Diagram
The onboard switches and LEDs for Tiva LaunchPads are as shown below:
The EK-TM4C123GXL LaunchPad comes with an RGB LED and two user buttons. Table 1 shows how these features are connected to the pins on the microcontroller.
Table 1: User Switches and RGB LED Signals
|GPIO Pin||Pin Function||User Device|
|PF1||GPIO||RGB LED (Red)|
|PF2||GPIO||RGB LED (Blue)|
|PF3||GPIO||RGB LED (Green)|
Table2: Pin Configurations for TM4C123G
In your code, you need to configure GPIO Port F pin 1 and pin 3 as outputs.
In this lab, you will learn how to create a C project for the Tiva LaunchPad board and configure the GPIO ports to blink the onboard LED.
* Before doing this lab, you have to study "Lesson 07: Create an ARM C Application with Keil μVision MDK-ARM" first.
- Create a new folder under the EE3450 folder and name it Lab01_BlinkingLEDs. Then double-click the folder you just created to jump into it.
- Launch the Keil μVisio and create a new project, save the project as Lab01_BlinkingLEDs.
- Create predefined symbolic constants for the GPIO configurations.
- Copy-paste the following code to your main.c file.
- Modify the Setup_GPIO() function based on the Pin Configuration Table (table2 or 4) to configure the onboard switches and LEDs.
- Inside the while(1) loop, the commands first of all turn the LED pin on (high), then delay for 1000 milliseconds (1 second), then turn the LED pin off and pause for another second.
Every C code must have a main() function, which is the entry point for the system. In the main() function, the line while(1) is the most popular used in an application for embedded microcontrollers. The line while(1) creates an infinite loop that never stops executing. It executes over and over and over again unless the program is intentionally stopped or there is some condition under this loop that gets met that takes out of this infinite loop.
Why do embedded programs contain an infinite loop? While personal computers have an operating system, embedded microcontrollers generally do not. Once a program has been executed on a personal computer, it returns control to the operating system of the computer. An embedded microcontroller, however, does not have an operating system and cannot be allowed to fall out of the program at any time. Hence, every embedded microcontroller application has an infinite loop built into it somewhere, such as the line while(1). This prevents the program from running out of things to do and doing random things that may be undesirable.
Read the following datasheet for the EK-TM4C123GXL or EK-TM4C1294XL board, then find the answer to the questions
- The CPU used on the Tiva board is an ARM Cortex-M4-based processor. What is the maximum operating frequency of the processor on EK-TM4C123GXL and EK-TM4C1294XL boards?
- List all external clock sources on your Tiva LaunchPad board.
- The onboard In-Circuit Debug Interface (ICDI) supports a UART communication port, which is connected to the Tiva LaunchPad. Which GPIO pins on the Tiva LaunchPad are used for UART communication?
- Each Tiva Launchpad has two microcontrollers. What is the purpose?