This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

EK-TM4C123GXL: Problem with transmitting string using UART (when change UART 0 to UART 1)

Part Number: EK-TM4C123GXL


Hi everyone. I'm currently working on sim900 by using TIVA C.

My code is here:

#include "inc/hw_ints.h"
#include "inc/hw_gpio.h"
#include "inc/hw_types.h"
#include <stdbool.h>
#include <stdint.h>
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "utils/uartstdio.h"
#include "driverlib/uart.h"
#include "driverlib/pin_map.h"
uint8_t sw1,sw2;

void SendMessage()
{
UARTprintf("AT+CMGF=1\n\r");
SysCtlDelay(SysCtlClockGet());
UARTprintf("AT+CMGS=\"+XXXXXXXXXXXX\"\n\r");
SysCtlDelay(SysCtlClockGet());
UARTprintf("SIM900 Message\n\r");
SysCtlDelay(SysCtlClockGet());
}

void MakeCall()
{
UARTprintf("ATD+XXXXXXXXXX;\n\r");
SysCtlDelay(SysCtlClockGet());
}

void ConfigureSwitch(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;
HWREG(GPIO_PORTF_BASE + GPIO_O_CR)= 0x01;
HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = 0;
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE,GPIO_PIN_0|GPIO_PIN_4);
GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
}

void ConfigureUART0(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
GPIOPinConfigure(GPIO_PA0_U0RX);
GPIOPinConfigure(GPIO_PA1_U0TX);
GPIOPinTypeUART(GPIO_PORTA_BASE,GPIO_PIN_0|GPIO_PIN_1);
UARTClockSourceSet(UART0_BASE,UART_CLOCK_PIOSC);
UARTStdioConfig(0,115200,16000000);
}

void main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2);
ConfigureUART0();
UARTprintf("AT\n\r");
SysCtlDelay(SysCtlClockGet()/3);
UARTCharPut(UART0_BASE,26);
ConfigureSwitch();
while(1)
{
sw1=1;
sw2=1;
sw1 = GPIOPinRead(GPIO_PORTF_BASE,GPIO_PIN_4);
sw2 = GPIOPinRead(GPIO_PORTF_BASE,GPIO_PIN_0);
if(sw1==0)
{
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2,0x00);
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,0x02);
SendMessage();
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2,0x00);
}
else if(sw2==0)
{
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2,0x00);
SysCtlDelay(SysCtlClockGet()/1000);
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2,0x04);
SysCtlDelay(SysCtlClockGet()/1000);
MakeCall();
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2,0x00);
}
}
}

Appear on PuTTy:

But when I change to UART 1 in order to send string to sim900, it fails and nothing happen.

I just change the code like this:

void ConfigureUART1(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);
GPIOPinConfigure(GPIO_PB0_U1RX);
GPIOPinConfigure(GPIO_PB1_U1TX);
GPIOPinTypeUART(GPIO_PORTB_BASE,GPIO_PIN_0|GPIO_PIN_1);
UARTClockSourceSet(UART1_BASE,UART_CLOCK_PIOSC);
UARTStdioConfig(1,115200,16000000);
}

and SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); (change from GPIOA to GPIOB)

I found that it lead to faultISR:

Please help me with this. 

Thank you very much!