TI中文支持网
TI专业的中文技术问题搜集分享网站

HalUARTRead相关问题

1.请问下面的flowControlThreshold 是什么意思?idleTimeout 是什么意思?

intEnable 设为FALSE是不是就是查询的方式了?

uartConfig.configured = TRUE;
uartConfig.baudRate = HAL_UART_BR_4800;//HAL_UART_BR_9600;
uartConfig.flowControl = FALSE;
uartConfig.flowControlThreshold = 0;
uartConfig.rx.maxBufSize = 128;//默认128;
uartConfig.tx.maxBufSize = 128;//默认128;
uartConfig.idleTimeout = 6;//默认6
uartConfig.intEnable = FALSE; uartConfig.callBackFunc = uartRxCb;
HalUARTOpen (HAL_UART_PORT_0, &uartConfig);

2.串口处理函数能否用下面的方式?

方式1测了没啥问题,我这边串口只接收,40ms一帧数据,发现用下面方式2的时候会偶现死机现象

方式1这样的方式可行?方式2为什么会死机

我的处理是把缓存里的数据取出来再发出去,发现方式2有的时候发不出去

方式1:

void uartRxCb( uint8 port, uint8 event )
{ HalUARTRead(port,UartDataBuf,128); //把数据接收放到buf中}

方式2

void uartRxCb( uint8 port, uint8 event )

while(Hal_UART_RxBufLen(port))
{
HalUARTRead(port,&UartDataBuf[Head++],1); //把数据接收放到buf中

}

}

Susan Yang:

请问您现在使用的是什么芯片?软硬件情况是怎样的?

user5367314:

回复 Susan Yang:

2530zstack 3.0.2

Susan Yang:

#define MT_UART_TX_BUFF_MAX 128#define MT_UART_RX_BUFF_MAX 128#define MT_UART_THRESHOLD (MT_UART_RX_BUFF_MAX / 2)#define MT_UART_IDLE_TIMEOUT 6

主要是数据的流控.

采用Rx/Tx两根线的方式进行通信时必须关闭流控,否则不能发送信息.即需要将默认流控所对应的宏定义MT_UART_DEFAULT_OVERFLOW的值更改为FALSE

user5367314intEnable 设为FALSE是不是就是查询的方式了?

是的

2 方式1是可以的,方式2的话Hal_UART_RxBufLen()是检查Rx缓冲区中剩余的字节数。

您现在在使用方式2的时候Hal_UART_RxBufLen,返回值是多少?

Susan Yang:

回复 user5367314:

一般来说,在Z-Stack-3.0.2 CC2530作为Coordinator 时 RAM/Flash受限严重,建议更换为CC2652R或者CC2538。

另外您可以参考下面的文档进行调整

http://www.ti.com/lit/wp/swra635/swra635.pdf

user5367314:

回复 Susan Yang:

2530作为终端的,只是终端上要用2530的串口收发数据协调器是2538

赞(0)
未经允许不得转载:TI中文支持网 » HalUARTRead相关问题
分享到: 更多 (0)