工具/软件:TI-RTOS
TI-RTOS:v2.01.00.03
CCS:v6.0.1.0040
您好!
我正在研究不知道数据长度的项目。 我将 UART 参数初始化如下。
void com0TaskFxn (UARg arg0、UARg arg1)
{
char rxBuffer[256]、txBuffer[256];
int ret、i;
UART_Handle 句柄= NULL;
UART_Params Params;
UART_Params_init (¶ms);
params.baudrate = usr_s.uart[struct_index_COM0].baud; //波特率由用户配置。
params.dataLength = UART_LEN_8;
params.parityType = UART_PAR_NONE;
params.stopbits = UART_STOP_one;
params.writeDataMode = UART_DATA_binary;
params.readDataMode = UART_DATA_binary;
Params.writeMode = UART_MODE_CALLBACK;
params.writeCallback =(UART_Callback)(&com0WriteCompleteCallbackFunction);
params.readReturnMode = UART_RETURN;
params.readEcho = UART_ECHO_OFF;
params.readTimeout =?
句柄= UART_open (struct_index_COM0、¶ms);
if (!handle){
system_printf ("COM 0 UART 未打开");
}
否则
{
System_printf ("COM 0 UART_initialized");
}
//清除存储缓冲区*/
rxBuffer[0]= 0;
while (1)
{
if (!GPIO_read (factory_reset_and_UART_config_mode_switch))
){uART0_rxBuffer
= 0;while (1)}UART_rgote_handle
= 0;UART_UART0 = UART_RATE_UART0;UART_UART0 = UART0 (UART_RATE_UART_RATE_
if (ret > 0)
{
//将空指针添加到缓冲区以进行字符串发送*/
rxBuffer[ret + 1]= 0;
if (sys_state.tcpServer1_is_active == true)
{
Mailbox_post (mboxCom0Rx4S1、rxBuffer、tcp_Server_task_main_loop_delay_in_ms + 5);}mboxCom0Rx4S1、rxBuffer (txt_txt_task_main_ms + 5);mboxCmp2)
BIOS_NO_WAIT)
){
ret = UART_WRITE (handle、&(txBuffer[1])、(int) txBuffer[0]);
}
}
根据 TI 用户手册:
当接收 FIFO 不为空时、接收超时中断有效;当 HSE 位清零时、接收 FIFO 不会在32位周期内接收到更多数据;当 HSE 位置位时、接收超时中断会在64位周期内产生。
当 FIFO 通过读取所有数据(或通过读取保存寄存器)变为空或向 UARTICR 寄存器的相应位写入1时、接收超时中断被清除。
我的问题是
1> 读取超时是以"毫秒"或"秒"为单位的超时。
2> 读取超时为1字节或整个250字节。
3> 由于我的代码波特率不固定、在这种情况下、应该读取超时的值是多少?
4>如果没有要读取的数据、在 UART_READ()返回0的时间之后。