微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > TI15.4 Stack串口问题

TI15.4 Stack串口问题

时间:12-23 整理:3721RD 点击:

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));就可以了,测试成功

感谢,问题已解决。

谢谢,这个函数不是中断的,试了下也是可行的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top