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.

RTOS/EK-TM4C1294XL: Conflict between gpio used as callbacks/interrupts and uart0

Part Number: EK-TM4C1294XL

Tool/software: TI-RTOS

Hello, 

I am currently working on a project that need to make both uart communication and set some gpios as input with interruption and callback. 

When I use onmy one of them I have no problem, but when I put the gpio interruption/callback init with the uart code, a crash occurs at runtime.

I try only to put the uartEcho code from the example in my uart task but I still have an issue. 

Here is my main :

int main(void)
{
    /* Call board init functions */
    Board_initGeneral();
    Board_initGPIO();

    Board_initUART();
    HWI_GpioInit();

//    /* !Pseudo: Create CDC (serial) periodic transmitting task */
//     Task_Params_init(&taskParams_CDC_Tx);
//     taskParams_CDC_Tx.stackSize = CDC_TX_STACK_SIZE;
//     taskParams_CDC_Tx.stack = &CDCTxTaskStack;
//     taskParams_CDC_Tx.priority = COMMUNICATION_PRIORITY;
//     Task_construct(&CDCTxTaskStruct, (Task_FuncPtr), &taskParams_CDC_Tx, NULL);

     /* !Pseudo: Create CDC (serial) periodic receiving task */
     Task_Params_init(&taskParams_CDC_Rx);

     taskParams_CDC_Rx.stackSize = CDC_RX_STACK_SIZE;
     taskParams_CDC_Rx.stack = &CDCRxTaskStack;
//     taskParams_CDC_Rx.priority = COMMUNICATION_PRIORITY;
     taskParams_CDC_Rx.instance->name = "echo";
     Task_construct(&CDCRxTaskStruct, (Task_FuncPtr)echoFxn, &taskParams_CDC_Rx, NULL);


    /* Start BIOS */
    BIOS_start();

    return (0);
}

and the HWI_GpioInit function :

void HWI_GpioInit()
{
    /*Set callback functions for all input gpîos*/
    /*Vertical engine*/
    GPIO_setCallback(VERT_PULSE_COUNT          ,vid_vertPulseCount_Cllbk);
    GPIO_setCallback(VERT_FRONT_END_SW         ,vid_vertFrontEndSW_Cllbk);
    GPIO_setCallback(VERT_BACK_END_SW          ,vid_vertBackEndSW_Cllbk);
    GPIO_setCallback(VERT_MOVE_BACKWARD_CHECK  ,vid_vertMoveBackwardCheck_Cllbk);
    GPIO_setCallback(VERT_MOVE_FORWARD_CHECK   ,vid_vertMoveForwardCheck_Cllbk);
    /*Back engine*/
    GPIO_setCallback(BACK_PULSE_COUNT           ,vid_backPulseCount_Cllbk);
    GPIO_setCallback(BACK_FRONT_END_SW          ,vid_backFrontEndSW_Cllbk);
    GPIO_setCallback(BACK_BACK_END_SW           ,vid_backBackEndSW_Cllbk);
    GPIO_setCallback(BACK_MOVE_BACKWARD_CHECK   ,vid_backMoveBackwardCheck_Cllbk);
    GPIO_setCallback(BACK_MOVE_FORWARD_CHECK    ,vid_backMoveForwardCheck_Cllbk);

    /*Transversal engine*/
    GPIO_setCallback(TRANS_PULSE_COUNT         ,vid_transPulseCount_Cllbk);
    GPIO_setCallback(TRANS_FRONT_END_SW        ,vid_transFrontEndSW_Cllbk);
    GPIO_setCallback(TRANS_BACK_END_SW         ,vid_transBackEndSW_Cllbk);
    GPIO_setCallback(TRANS_MOVE_BACKWARD_CHECK ,vid_transMoveBackwardCheck_Cllbk);
    GPIO_setCallback(TRANS_MOVE_FORWARD_CHECK  ,vid_transMoveForwardCheck_Cllbk);

    /*Enable interruptions for all input gpios*/
    /*Vertical engine*/
    GPIO_enableInt(VERT_PULSE_COUNT);
    GPIO_enableInt(VERT_FRONT_END_SW);
    GPIO_enableInt(VERT_BACK_END_SW);
    GPIO_enableInt(VERT_MOVE_BACKWARD_CHECK);
    GPIO_enableInt(VERT_MOVE_FORWARD_CHECK);
    /*Back engine*/
    GPIO_enableInt(BACK_PULSE_COUNT);
    GPIO_enableInt(BACK_FRONT_END_SW);
    GPIO_enableInt(BACK_BACK_END_SW );
    GPIO_enableInt(BACK_MOVE_BACKWARD_CHECK);
    GPIO_enableInt(BACK_MOVE_FORWARD_CHECK);
    /*Transversal engine*/
    GPIO_enableInt(TRANS_PULSE_COUNT);
    GPIO_enableInt(TRANS_FRONT_END_SW);
    GPIO_enableInt(TRANS_BACK_END_SW);
    GPIO_enableInt(TRANS_MOVE_BACKWARD_CHECK);
    GPIO_enableInt(TRANS_MOVE_FORWARD_CHECK);
}

All the defines above (BACK_...) corresponds to one GPIO pin and are defines in both Board.h and EK_TM4C1294XL.c and EK_TM4C1294XL.h files. 

The crash is the following : 

FSR = 0x0000
HFSR = 0x40000000
DFSR = 0x0000000a
MMAR = 0x00005659
BFAR = 0x00005659
AFSR = 0x00000000
Terminating execution...

Thank you for your help ! 

Best regards, 

Elisabeth