SPMU373A March   2021  – August 2022 TM4C1230C3PM , TM4C1230D5PM , TM4C1230E6PM , TM4C1230H6PM , TM4C1231C3PM , TM4C1231D5PM , TM4C1231D5PZ , TM4C1231E6PM , TM4C1231E6PZ , TM4C1231H6PGE , TM4C1231H6PM , TM4C1231H6PZ , TM4C1232C3PM , TM4C1232D5PM , TM4C1232E6PM , TM4C1232H6PM , TM4C1233C3PM , TM4C1233D5PM , TM4C1233D5PZ , TM4C1233E6PM , TM4C1233E6PZ , TM4C1233H6PGE , TM4C1233H6PM , TM4C1233H6PZ , TM4C1236D5PM , TM4C1236E6PM , TM4C1236H6PM , TM4C1237D5PM , TM4C1237D5PZ , TM4C1237E6PM , TM4C1237E6PZ , TM4C1237H6PGE , TM4C1237H6PM , TM4C1237H6PZ , TM4C123AE6PM , TM4C123AH6PM , TM4C123BE6PM , TM4C123BE6PZ , TM4C123BH6PGE , TM4C123BH6PM , TM4C123BH6PZ , TM4C123FE6PM , TM4C123FH6PM , TM4C123GE6PM , TM4C123GE6PZ , TM4C123GH6PGE , TM4C123GH6PM , TM4C123GH6PZ , TM4C123GH6ZXR , TM4C1290NCPDT , TM4C1290NCZAD , TM4C1292NCPDT , TM4C1292NCZAD , TM4C1294KCPDT , TM4C1294NCPDT , TM4C1294NCZAD , TM4C1297NCZAD , TM4C1299KCZAD , TM4C1299NCZAD , TM4C129CNCPDT , TM4C129CNCZAD , TM4C129DNCPDT , TM4C129DNCZAD , TM4C129EKCPDT , TM4C129ENCPDT , TM4C129ENCZAD , TM4C129LNCZAD , TM4C129XKCZAD , TM4C129XNCZAD

 

  1.   Read This First
    1.     About This Manual
    2.     Glossary
    3.     Related Documentation From Texas Instruments
    4.     Support Resources
    5.     Trademarks
  2. 1Introduction to TivaWare SDK
    1. 1.1 TivaWare SDK Folder Breakdown
  3. 2TivaWare Example Projects
    1. 2.1 TivaWare Development Board Examples
    2. 2.2 TivaWare Peripheral Examples
    3. 2.3 How to Import an Example Project into CCS
  4. 3Linking Files and Libraries into a TivaWare Project in Code Composer Studio
    1. 3.1 Linking Files in CCS
    2. 3.2 Linking Libraries in CCS
  5. 4How to Debug a TivaWare Library
    1. 4.1 How to Direct Code Composer Studio to a Source File
    2. 4.2 How to Rebuild TivaWare Libraries
  6. 5How to Add TivaWare to an Existing CCS Project
    1. 5.1 Path Variables
    2. 5.2 Include Paths
    3. 5.3 Predefined Variables
    4. 5.4 Library Linking
  7. 6TivaWare Boot Loader
    1. 6.1 Modifying a TivaWare Project for Boot Loading in Code Composer Studio
    2. 6.2 How to Boot Load with LM Flash Programmer
  8. 7Software Best Practices
    1. 7.1 Stack / Heap Settings and Stack Overflow
    2. 7.2 Interrupt Service Routines
      1. 7.2.1 Best Practices
      2. 7.2.2 TivaWare Vector Tables and IntDefaultHandler
    3. 7.3 TivaWare Hardware Header Files
    4. 7.4 ROM and MAP TivaWare Prefixes
  9. 8TM4C Resources
  10. 9Revision History

TivaWare Hardware Header Files

A common issue that can occur with compiling code after merging examples together or trying to add new functionality to an existing project is to get build errors like the ‘unresolved symbol’ error seen in Section 4.1. There are many situations that can cause the error to occur and that section covers some of the basic ones based on TivaWare API’s. However, this issue can also arise when using hardware-based declarations that are harder to track down.

The declarations for TM4C hardware access macros, register offsets, and hardware bit fields are provided within the set of hardware header files. These files are located within the inc folder of the TivaWare SDK and have filenames that start with the ‘hw_’ prefix. These declarations are then used by TivaWare API’s to control the MCU at a register programming level. While TivaWare provides a broad set of API’s for every peripheral, there are cases where a few register level programming calls may be needed such as to optimize the speed of a process or in the event an API does not offer the correct settings.

A majority of the hardware header files are specific to peripherals and contain information for the registers (both offsets and bit fields) of that specific peripheral. These files are occasionally needed in an application when receiving information such as peripheral status flags that need to be parsed. If additional code is added and an unresolved symbol seems to be a definition from a specific peripheral, check if that peripheral’s hardware header file is included in the project or search the inc folder in TivaWare to see which file(s) contain that definition.

In addition to the peripheral specific files, there are four additional hardware header files that provide more general-purpose declarations:

The hw_memmap.h file must be used in every TivaWare project as it provides the memory base addresses for all peripherals that are accessed. This is the only mandatory hardware file required.

The hw_ints.h file includes the definitions needed to enable peripheral ISR’s in the NVIC vector table. This file is needed for any TivaWare project that uses an ISR and it is a good practice to always have it included.

The hw_nvic.h file has the definitions for everything concerning the NVIC. It is included in every TivaWare project within the startup_ccs file, but if the application code needs to use any NVIC-specific definitions such as with a boot loader application then it must be included within the application file as well.

The hw_types.h file provides the macros for directly modifying a register. This is required only when making direct register modifications as part of the application code.