Hi,
I am trying to enable interrupt for Gpio pin F0 and want to send a command to GSM modem when SW2 is pressed.
But its not going into interrupt routine.
The code is given below:
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/i2c.h"
#include "driverlib/rom.h"
#include "driverlib/pin_map.h"
#include "inc/tm4c123gh6pm.h"
#include "inc/hw_i2c.h"
#include "driverlib/uart.h"
#include "driverlib/interrupt.h"
#define MEM 0xE0028000
int i =0;
int y=0;
int K=0;
int J =0;
uint8_t send1[14]={'A','T','+','C','S','C','S','=','"','G','S','M','"',0x0d};
uint8_t CMD1[7]={'A','T','+','C','S','Q',0x0d};
uint8_t call[15]={'A','T','D','9','8','0','4','8','1','8','9','1','1',';',0x0d};
uint8_t SMSArray[200];
void UartIntHandler(void)
{GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,0x02);
//static uint32_t x = 0x00000000 ;
UARTIntClear(UART1_BASE,UART_INT_TX|UART_INT_RX);
SMSArray[y]= UARTCharGet(UART1_BASE);
UARTCharPut(UART0_BASE, SMSArray[y]);
y++;
if(SMSArray[80]=='O'&&SMSArray[81]=='N')
SendSms();
}
void GpioIntHandler(void)
{ GPIOIntClear(GPIO_PORTF_BASE, GPIO_PIN_0);
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,0x04);
//if(GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4)==0); //low level checking
for(K=0;K<=15;K++)
{
UARTCharPut(UART1_BASE, call[K]);
SysCtlDelay(20000000);
}
}
int main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
GPIOPinConfigure(GPIO_PB0_U1RX);
GPIOPinConfigure(GPIO_PB1_U1TX);
GPIOPinTypeUART(GPIO_PORTB_BASE, GPIO_PIN_0|GPIO_PIN_1);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_2);
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_0|GPIO_PIN_4);
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0|GPIO_PIN_1);
UARTConfigSetExpClk(UART1_BASE, SysCtlClockGet(), 9600,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));
UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 9600,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));
IntEnable(INT_UART1);
GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_0,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);
GPIOIntDisable(GPIO_PORTF_BASE, GPIO_PIN_0); // Disable interrupt for PF4 (in case it was enabled)
GPIOIntClear(GPIO_PORTF_BASE, GPIO_PIN_0); // Clear pending interrupts for PF4
GPIOIntRegister(GPIO_PORTF_BASE, GpioIntHandler); // Register our handler function for port F
GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_0,GPIO_FALLING_EDGE); // Configure PF4 for falling edge trigger
GPIOIntEnable(GPIO_PORTF_BASE, GPIO_PIN_0); // Enable interrupt for PF0
UARTIntEnable(UART1_BASE,UART_INT_TX|UART_INT_RX);
UARTEnable(UART1_BASE);
UARTEnable(UART0_BASE);
IntMasterEnable();
for(J=0;J<=7;J++)
{GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,0x0E);
UARTCharPut(UART1_BASE, CMD1[J]);
SysCtlDelay(20000000);
while (1)
{
}
}