case E_FUNC_UART0:
case E_FUNC_UART0_RX_TX:
case E_FUNC_UART0_RTS_CTS:
case E_FUNC_UART1:
case E_FUNC_UART1_RX_TX:
case E_FUNC_UART1_RTS_CTS:
{
if ((function >= E_FUNC_UART0) && (function <= E_FUNC_UART0_RTS_CTS))
u8Offset = 0;
else
u8Offset = 4;
if ((function == E_FUNC_UART0) || (function == E_FUNC_UART1))
{
outpw(&SYS->GPBMFP, inpw(&SYS->GPBMFP) | (0xF<<(0+u8Offset)));
outpw(&SYS->ALTMFP, inpw(&SYS->ALTMFP) & ~(0x1<<11));
}else
if ((function == E_FUNC_UART0_RX_TX) || (function == E_FUNC_UART1_RX_TX))//这一句的意思就是只用TX,RX为串口收发,CTS,RTS不使用。
{
outpw(&SYS->GPBMFP, inpw(&SYS->GPBMFP) | (0x3<<(0+u8Offset)));
}else
if ((function == E_FUNC_UART0_RTS_CTS) || (function == E_FUNC_UART1_RTS_CTS))
{
outpw(&SYS->GPBMFP, inpw(&SYS->GPBMFP) | (0x3<<(2+u8Offset)));
outpw(&SYS->ALTMFP, inpw(&SYS->ALTMFP) & ~(0x1<<11));
}
}break;
在串口初始化里面设置成
void UART1_Init()
{
STR_UART_T UartParam;
// E_DRVGPIO_FUNC FuncNum = E_FUNC_UART1;
E_UART_PORT UartNum = UART_PORT1;
/* Uart Pin Config */
DrvGPIO_InitFunction(E_FUNC_UART1_RX_TX);
/* Uart Config */
UartParam.u32BaudRate = 921600;
UartParam.u8cDataBits = DRVUART_DATABITS_8;
UartParam.u8cStopBits = DRVUART_STOPBITS_1;
UartParam.u8cParity = DRVUART_PARITY_NONE;
UartParam.u8cRxTriggerLevel = DRVUART_FIFO_1BYTES;
UartParam.u8TimeOut = 0;
/* Uart Open */
DrvUART_Open(UartNum, &UartParam);
/* Enable the Uart function */
DrvUART_EnableInt(UartNum, DRVUART_RDAINT, UART1_Callbackfn);
}
CTS,RST就可以当普通I/0使用。
|