As an early contributor to this thread - am concerned that this code:
//Register Select(RS) = 1, Enable(E) = 1//
GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_6 | GPIO_PIN_7, 0xC0);
impacts both RS & E simultaneously. Can't recall if I placed the HD44780 (copied by most clones) timing chart here - but there was an advisory to "not" drive both RS & E simultaneously. Now it may be that this restriction "only applies" upon the "fall" of enable - it's been quite awhile since I've checked the spec.
Also fear that "SysCtlDelay(2);" which shoots for ~230nS delay may be too short. (i.e. larger value would be safer)
Beware also that different MCU System Clocks will impact any/all delays which are so based. (i.e. SysCtlDelay(x);)
And - Mahmoud great that you took the reins on this one - true spirit of the forum...