hi,TI工程师
你好,我在调试串口的时候,参照官网的写法,遇到串口读不到数据。读串口采用回调函数的形式,在main函数下只运行读串口一个任务,其他任务都屏蔽掉了。然后串口调试助手每隔1000ms发送一次1234567890。在debug状态下始终读不到数据。请问会是什么问题?
//================================UART_basic_recesive===================================
static void uartreadCB(UART_Handle handle,void *rx_buf,size_t size)
{ int bytes = 0;
bytes = UART_read(handle_RX_CB,basic_rx_buf,10);
if(bytes==10)
{
GPIOPinToggle(LED2);
}
else{
GPIOPinToggle(LED3);
}
}
static void UART_basic_recesive_fxn()
{
int rxbytes = 0;
UART_init(); UART_Params_init(¶ms_RX_CB);
params_RX_CB.baudRate = 9600;
params_RX_CB.readMode = UART_MODE_CALLBACK;
params_RX_CB.writeMode = UART_MODE_BLOCKING;
params_RX_CB.readDataMode = UART_DATA_BINARY;// UART_DATA_TEXT;// params_RX_CB.writeDataMode = UART_DATA_BINARY;
params_RX_CB.dataLength = UART_CONFIG_WLEN_8;
params_RX_CB.readCallback = uartreadCB;
// params.readTimeout = 100;
params_RX_CB.stopBits = UART_STOP_ONE;
params_RX_CB.readEcho = UART_ECHO_OFF;
handle_RX_CB = UART_open(0,¶ms_RX_CB);
//for(;;)
// {
UART_control(handle_RX_CB,0, NULL);
// UART_write(handle,tx_buf2,sizeof(tx_buf2));
rxbytes = UART_read(handle_RX_CB,basic_rx_buf,10);
// UART_write(handle,basic_rx_buf,sizeof(basic_rx_buf));
// UART_close(handle);
// delay_ms(10);
// }
Task_exit();
}
void UART_basic_recesive_task()
{
Task_Params uart_task_params;
Task_Params_init(&uart_task_params);
uart_task_params.stack = uart_basic_recesive_stack;
uart_task_params.stackSize = 200;
uart_task_params.priority = 2;
Task_construct(&uart_basic_recesive_struct,(Task_FuncPtr)UART_basic_recesive_fxn, &uart_task_params, NULL);
}
oran zhang:
我的协议栈用的是2.0版本的。
da qin zheng sheng:
串口能给电脑发送数据不?
oran zhang:
回复 da qin zheng sheng:
串口是可以给电脑发送数据的,使用回调函数的方式也是可以给电脑发送数据的。
就是在peripheral工程下单独建立一个串口的任务,并且在main函数下也只运行串口读取的函数,这个时候总是读不到数据。
xiaxiaofei:
我也遇到这个问题了,好几天了,一直解决不了,楼主解决了吗?