I'm developing a performance-critical application that requires some critical direct-metal code with Tivaware providing acceptable performance for the remainder. However, if I attempt to compile a module in CCS that includes "inc/tm4c123gh6pm.h" along with all the hw_* headers (e.g. "inc/hw_adc.h", "inc/hw_ints.h", etc..), I will be rewarded with 81 incompatible macro redefinition warnings. I've seen other posts where it is recommended that the device header be removed, because, why would you ever want to program direct-metal? Uh, because microcontroller? Does this imply that the "Combined Programming Model" described in the Tivaware Peripheral Driver Library User's Guide can only be used in strictly segregated modules? Note that such an approach is further complicated by the need to inline direct-metal code to avoid function-call overhead, and said inlined code may need to be executed from otherwise non-direct-metal modules.
This all appears to be caused by simple namespace conflicts driven by different nomenclature conventions between the PDL and the direct register headers. Can't we just fix the nomenclature so we can all move on? Here's a new nomenclature: for the device headers all INT_* #defines become INTP_*, and EEPROM_PP_SIZE_M, FLASH_FMA_OFFSET_M, and ADC_CTL_VREF_M become EEPROM_PP_SIZE_MA, FLASH_FMA_OFFSET_MA, and ADC_CTL_VREF_MA respectively. Why MA? Because they're my initials.
Am I missing something here?