串口0初始化如下,即收发线为P0.2和P0.3
void initUart0()
{
halUARTCfg_t uartConfig;
/* Initialize APP ID */
App_TaskID = 0;
uartConfig.configured = TRUE;
uartConfig.baudRate = HAL_UART_BR_4800;//HAL_UART_BR_9600;
uartConfig.flowControl = FALSE;
uartConfig.flowControlThreshold = 0;
uartConfig.rx.maxBufSize = 240;//默认128;
uartConfig.tx.maxBufSize = 240;//默认128;
uartConfig.idleTimeout = 6; uartConfig.intEnable = TRUE; uartConfig.callBackFunc = uartRxCb;
HalUARTOpen (HAL_UART_PORT_0, &uartConfig);
}
以上初始化已经关闭了流控制,我想把P0.4和P0.5用作GPIO(我在初始化里已经把P0.4和P0.5用作GPIO还是不行),
但是怎么都不行,一直查找发现以下代码,串口例程默认的是DMA,
我关闭的流控制,下面的代码怎么又自动打开了?(我在初始化里已经把P0.4和P0.5用作GPIO还是不行),
static uint16 HalUARTReadDMA(uint8 *buf, uint16 len)
{
……
PxOUT &= ~HAL_UART_Px_RTS; // Re-enable the flow on any read.
……
}
我只想用P0.2和P0.3收发数据即可,P0.4和P0.5用作普通IO,请问怎么配置?(我在初始化里已经把P0.4和P0.5用作GPIO根本不起作用)
YiKai Chen:
試試把MT_UART_DEFAULT_OVERFLOW設置為FALSE
Susan Yang:
需要将默认流控所对应的宏定义MT_UART_DEFAULT_OVERFLOW的值更改为FALSE,即关闭串口流控。
采用Rx/Tx两根线的方式进行通信时需要关闭流控,否则不能发送信息。