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