请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC2640R2F 您好!
我已经实现了 UART 来处理每字节数据。 下面是我的代码。 当我通过在键盘上键入 Tera Term 手动输入时、此代码没有问题。 但是、当我复制并粘贴到超过37个字节或字符的 Tera 术语时、只有32个字节存储在 CmdRxBuf 中。 我们有一个 LabVIEW 程序、该程序发送相同的37个字符、我得到相同的结果。 当我设置1毫秒/字符传输延迟时、Tera Term 中的复制和粘贴问题得到了解决。 导致此 UART 问题的原因是什么?
void UartApp__UartRxCB (UART_Handle handle、void * buf、size_t count)
{
TxBuf =((uint8_t*) buf)[0];
if (TxBuf ='\r\n')
{
CmdRxBuf[charcount]= TxBuf;
UartApp_WriteString ("\r\n");
对于(i = 0;i < charcount;i++)
{
TestApp_DecodeData (CmdRxBuf[i]);
}
CmdRxBuf[i]='\0';
TestApp_DecodeData (CmdRxBuf[i]);
/*清除 CmdRxBuf */
对于(I = 0;I < UART_RX_DATA_LENGTH;I++)
{
CmdRxBuf[i]='\0';
}
charcount = 0;
}
其他
{
CmdRxBuf[charcount]= TxBuf;
charcount++;
}
UART_WRITE (hUART、&TxBuf、sizeof (TxBuf));
UART_READ (hUART、&RxBuf、sizeof (RxBuf)/sizeof (BUFTYPE));
}
void UartApp_Init (void)
{
const char echoPrompt[]="UART 已初始化! !! !\r\n";
UART_Params uartParams;
/*调用驱动程序初始化函数*/
UART_INIT();
/*创建一个数据处理关闭的 UART。 *
UART_PARAMS_INIT (uartParams);
uartParams.readMode = UART_MODE_CALLACK;
uartParams.writeMode = UART_MODE_CALLBACK;
uartParams.readCallback = UartApp_UartRxCB;
uartParams.writeCallback = UartApp_UartTxCB;
uartParams.readEcho = UART_ECHO_OFF;
uartParams.baudrate = 115200;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.dataLength = UART_LEN_8;
uartParams.readReturnMode = UART_return_full;
hUART = UART_open (Board_UART0、uartParams);
if (hUART == NULL)
{
/* UART_open()失败*/
while (1);
}
UART_WRITE (hUART、echoPrompt、sizeof (echoPrompt));
UART_READ (hUART、&RxBuf、sizeof (RxBuf)/sizeof (BUFTYPE));
charcount = 0;
}
-克尔