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