|
关于Z-Stack的UART驱动,在HAL层的hal_uart.c文件中,要使用串口就得先配置串口,有个结构体的,详情如下
typedef struct
{
bool configured; // 已配置?
uint8 baudRate; // 波特率
bool flowControl; // 流量控制
uint16 flowControlThreshold; // 流量控制阀值
uint8 idleTimeout; // 超时
halUARTBufControl_t rx; // 接收缓冲
halUARTBufControl_t tx; // 发送缓冲
bool intEnable; // 中断使能
uint32 rxChRvdTime; //
halUARTCBack_t callBackFunc; // 回调函数,当串口接收数据的时候调用
}halUARTCfg_t;
所以,我们一般都是在任务初始化的时候进行UART的配置,具体操作如下
要先#include "hal_uart.h"
声明一个串口配置
halUARTCfg_t uartConfig;
接着进行配置
uartConfig.configured = TRUE; // 2x30 don't care - see uart driver.
uartConfig.baudRate = HAL_UART_BR_38400;
uartConfig.flowControl = FALSE;
uartConfig.flowControlThreshold = 64; // 2x30 don't care - see uart driver.
uartConfig.rx.maxBufSize = 128; // 2x30 don't care - see uart driver.
uartConfig.tx.maxBufSize = 128; // 2x30 don't care - see uart driver.
uartConfig.idleTimeout = 6; // 2x30 don't care - see uart driver.
uartConfig.intEnable = TRUE; // 2x30 don't care - see uart driver.
uartConfig.callBackFunc = uartCB; // 回调函数,这个要自己写,如果不用可设置为0
接着你就可以使用uint16 HalUARTRead ( uint8 port, uint8 *pBuffer, uint16 length )以及
uint16 HalUARTWrite ( uint8 port, uint8 *pBuffer, uint16 length )来进行串口的收发了,具体实现请参考SerialApp
特别提一下,流量控制,当设置了这个标志之后,你就得要有CTS以及RTS这两个针脚。
|
|