Part Number:CC2640R2F
Tool/software: Code Composer Studio
Hey, guys
I create a uart task. It can write data normally. However, it cannot read things. The code is below:
static void Board_taskFxn(UArg arg0, UArg arg1)
{
init();
uint32_t events;
while (1)
{
print_str("pending...\r\n");
events = Event_pend(syncEvent, Event_Id_NONE, EVENTS,
ICALL_TIMEOUT_FOREVER);
print_str("pending over.\r\n");
if (events & UART_READ_EVT)
{
uart_process_read();
}
}
}
void Board_createTask() {
Task_Params taskParams;
// Configure task
Task_Params_init(&taskParams);
taskParams.stack = sbcTaskStack;
taskParams.stackSize = TASK_STACK_SIZE;
taskParams.priority = TASK_PRIORITY;
Task_construct(&bTask, Board_taskFxn, &taskParams, NULL);
}
static void init(){
ICall_registerApp(&selfEntity, &syncEvent);
// Init UART and specify non-default parameters
UART_init();
UART_Params_init(¶ms);
params.writeDataMode = UART_DATA_BINARY;
params.readDataMode = UART_DATA_BINARY;
params.readEcho = UART_ECHO_OFF;
params.readMode = UART_MODE_CALLBACK;
params.readCallback = readCallback;
params.baudRate = 115200;
params.parityType = UART_PAR_NONE;
params.stopBits = UART_STOP_ONE;
handle = UART_open(Board_UART0, ¶ms);
UART_control(handle, UARTCC26XX_CMD_RETURN_PARTIAL_ENABLE, NULL);
print_str("Init completed\r\n");
}
static void readCallback(UART_Handle handle, void *buffer, size_t size)
{
Event_post(syncEvent, UART_READ_EVT);
UART_read(handle, uartReadBuf, MAX_NUM_RX_BYTES);
}
void print_str(uint8 *cs)
{
int size = strlen(cs);
UART_write(handle, cs, size);
}
It can print "pending" but no "pending over". It seems Even_pend function never returns.
How can i fix it? Help me!
Thank you!