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.

CCS/CC3220SF-LAUNCHXL: How to read/write Uart data with multi thread

Part Number: CC3220SF-LAUNCHXL
Other Parts Discussed in Thread: CC3220SF

Tool/software: Code Composer Studio

Dear Experts,

now i am working with CC3220SF launch pad and i was trying to read/write data with multi thread, this is my code 

/*

* ======== gpiointerrupt.c ========
*/
#include <stdint.h>
#include <stddef.h>

/* Driver Header files */
#include <ti/drivers/GPIO.h>
#include <ti/drivers/UART.h>
//#include <ti/display/Display.h>
#include <pthread.h>

/* Example/Board Header files */
#include "Board.h"

#define THREADSTACKSIZE (768)

/*
* ======== gpioButtonFxn0 ========
* Callback function for the GPIO interrupt on Board_GPIO_BUTTON0.
*/
void gpioButtonFxn0(uint_least8_t index)
{
/* Clear the GPIO interrupt and toggle an LED */
GPIO_toggle(Board_GPIO_LED0);
//UART_write(uart, "BUTTON 1", sizeof("BUTTON 1"));
}

/*
* ======== gpioButtonFxn1 ========
* Callback function for the GPIO interrupt on Board_GPIO_BUTTON1.
* This may not be used for all boards.
*/
void gpioButtonFxn1(uint_least8_t index)
{
/* Clear the GPIO interrupt and toggle an LED */
GPIO_toggle(Board_GPIO_LED1);
// UART_write(uart, "BUTTON 2", sizeof("BUTTON 2"));
}


void *threadFxn0(void *arg0)
{
char input;
const char echoPrompt[] = "Echoing characters:\r\n";
UART_Handle uart;
UART_Params uartParams;

UART_init();

// Create a UART with data processing off.
UART_Params_init(&uartParams);
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.readReturnMode = UART_RETURN_FULL;
uartParams.readEcho = UART_ECHO_OFF;
uartParams.baudRate = 115200;

uart = UART_open(Board_UART0, &uartParams);

if (uart == NULL) {
// UART_open() failed //
while (1);
}

while(1)
{
UART_write(uart, echoPrompt, sizeof(echoPrompt));
UART_read(uart, &input, 1);
UART_write(uart, &input, 1);
}

//return (NULL);
}

/*
* ======== mainThread ========
*/
void *mainThread(void *arg0)
{
// char input;
const char echoPrompt[] = "Echoing characters:\r\n";
UART_Handle uart;
UART_Params uartParams;


pthread_t thread0;
pthread_attr_t attrs;
struct sched_param priParam;
int retc;
int detachState;

// Call driver init functions
GPIO_init();
// Call driver init functions
// GPIO_init();
UART_init();

// Configure the LED and button pins
GPIO_setConfig(Board_GPIO_LED0, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
GPIO_setConfig(Board_GPIO_LED1, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
GPIO_setConfig(Board_GPIO_BUTTON0, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);

// Turn on user LED
GPIO_write(Board_GPIO_LED0, Board_GPIO_LED_ON);

// install Button callback
GPIO_setCallback(Board_GPIO_BUTTON0, gpioButtonFxn0);

// Enable interrupts
GPIO_enableInt(Board_GPIO_BUTTON0);


// Create a UART with data processing off.
UART_Params_init(&uartParams);
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.readReturnMode = UART_RETURN_FULL;
uartParams.readEcho = UART_ECHO_OFF;
uartParams.baudRate = 115200;

uart = UART_open(Board_UART0, &uartParams);

if (uart == NULL) // UART_open() failed
{
while (1);
}

UART_write(uart, echoPrompt, sizeof(echoPrompt));

// If more than one input pin is available for your device, interrupts
// will be enabled on Board_GPIO_BUTTON1.

if (Board_GPIO_BUTTON0 != Board_GPIO_BUTTON1) {
// Configure BUTTON1 pin
GPIO_setConfig(Board_GPIO_BUTTON1, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);

// Install Button callback
GPIO_setCallback(Board_GPIO_BUTTON1, gpioButtonFxn1);
GPIO_enableInt(Board_GPIO_BUTTON1);
}

// Create application threads
pthread_attr_init(&attrs);

detachState = PTHREAD_CREATE_DETACHED;
// Set priority and stack size attributes
retc = pthread_attr_setdetachstate(&attrs, detachState);
if (retc != 0) {
// pthread_attr_setdetachstate() failed
while (1);
}

retc |= pthread_attr_setstacksize(&attrs, THREADSTACKSIZE);
if (retc != 0) {
// pthread_attr_setstacksize() failed
while (1);
}

// Create threadFxn0 thread
priParam.sched_priority = 1;
pthread_attr_setschedparam(&attrs, &priParam);

retc = pthread_create(&thread0, &attrs, threadFxn0, NULL);
if (retc != 0) {
// pthread_create() failed
while (1);
}

return (NULL);

}

i don't know what is the problem here but i get uart print output at only once then that is not read or write data to uart, anyone can help me to find the problem

thank you