TI15.4 Stack串口问题
ca参照协议栈的例程,配置如下:
void UsartInit(uint32_t baudRate) /*串口初始化*/
{
UART_Params uartParams;
/* Create a UART with data processing off. */
UART_Params_init(&uartParams);
//uartParams.writeMode = UART_MODE_CALLBACK;
//uartParams.readMode = UART_MODE_CALLBACK;
//uartParams.readCallback = Debug_UartCallBackFun;
//uartParams.writeCallback = Debug_UartCallBackFun;
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.readReturnMode = UART_RETURN_FULL;
uartParams.readEcho = UART_ECHO_OFF;
uartParams.baudRate = baudRate;
uartHandle = UART_open(CC1310_LAUNCHXL_UART0, &uartParams);
}
void UsartSend(uint8_t *pdata,uint8_t datalen) /*串口发送*/
{
UART_write(uartHandle, pdata, datalen);
}
uint8_t UsartReceive(void) /*串口接收*/
{
uint8_t result = 0;
result = UART_read(uartHandle, UsartProcess.ReceiveBuff,sizeof(UsartProcess.ReceiveBuff));
return result;
}
其中ReceiveBuff分配的32个字节。
串口发送正常。按协议栈的说明,串口接收是阻塞式,所以单独开了个任务来读串口任务,现在的现象是只能等串口缓存满了(32个字节),UART_read才会返回,否则一直阻塞在那里,那如果我一条命令没有32个字节,并且不知道一次接收了多少数据,该如何操做,可以读取当前接收的一条命令。
研究下下面这个配置
//Enable Partial Reads on all subsequent UART_read()
UART_control(uartHandle, UARTCC26XX_RETURN_PARTIAL_ENABLE, NULL);
用这个函数UART_readPolling(uartHandle, UsartProcess.ReceiveBuff,sizeof(UsartProcess.ReceiveBuff));就可以了,测试成功
感谢,问题已解决。
谢谢,这个函数不是中断的,试了下也是可行的。