Folks,
when TivaWare first came out we had the choice of two UART libraries to use. Either
C:\ti\TivaWare_C_Series-2.1.X\utils\uartstdio.c (having UARTPrintf) or
C:\ti\TivaWare_C_Series-2.1.X\driverlib\uart.c (having UARTCharPut and Get etc)
The attraction of UARTPrintf is that it has a S/W buffer whereas UARTCharPut and UARTCharGet have no S/W buffering.
The problem with uartstdio.c (containing UARTPrintf ) is that it is only hard coded to work with the first 3 UART port AND it cannot open/buffer more than one UART at a time. but the TM4C129X has EIGHT UARTs.. To use UARTPrintf on a TM4C129X one needs to modify the library code to add more ports, plus have ONE copy of the library for each UART port (as only one port can be opened at once and the buffering is also not scalable)
- Was it intentional or an oversight to exclude a buffered UART Tx and Rx in uart.c ??
- Why wasn't uartstdio.c re-written to support MCUs having more than 3 UARTS ??
UARTStdioConfig is copied below from uartstdio.c showing how it only handles 3 ports.
void UARTStdioConfig(uint32_t ui32PortNum, uint32_t ui32Baud, uint32_t ui32SrcClock) { // // Check the arguments. // ASSERT((ui32PortNum == 0) || (ui32PortNum == 1) || (ui32PortNum == 2));