void initFLEXIO_UART(void) { flexio_uart_config_t config; // ******************************************************** // config.enableUart = true; // config.enableInDoze = false; // config.enableInDebug = true; // config.enableFastAccess = false; // config.baudRate_Bps = 115200U; // config.bitCountPerChar = kFLEXIO_UART_8BitsPerChar; // ******************************************************** FLEXIO_UART_GetDefaultConfig(&config); config.baudRate_Bps = BOARD_DEBUG_UART_BAUDRATE; config.enableUart = true; uartDev.flexioBase = BOARD_FLEXIO_BASE; uartDev.TxPinIndex = FLEXIO_UART_TX_PIN; uartDev.RxPinIndex = FLEXIO_UART_RX_PIN; uartDev.shifterIndex[0] = 2U; uartDev.shifterIndex[1] = 3U; uartDev.timerIndex[0] = 2U; uartDev.timerIndex[1] = 3U; /* uartDev.shifterIndex[0] = 0U; uartDev.shifterIndex[1] = 1U; uartDev.timerIndex[0] = 0U; uartDev.timerIndex[1] = 1U; */ FLEXIO_UART_Init(&uartDev, &config, FLEXIO_CLOCK_FREQUENCY); FLEXIO_UART_TransferCreateHandle(&uartDev, &g_uartHandle, FLEXIO_UART_UserCallback, NULL); }
/*! * @brief Main function */ int main(void) { flexio_uart_config_t config; flexio_uart_transfer_t xfer; flexio_uart_transfer_t sendXfer; flexio_uart_transfer_t receiveXfer; size_t receivedBytes; uint32_t i; BOARD_InitPins(); BOARD_BootClockRUN(); CLOCK_SetFlexio0Clock(1U); /* * config.enableUart = true; * config.enableInDoze = false; * config.enableInDebug = true; * config.enableFastAccess = false; * config.baudRate_Bps = 115200U; * config.bitCountPerChar = kFLEXIO_UART_8BitsPerChar; */ FLEXIO_UART_GetDefaultConfig(&config); config.baudRate_Bps = BOARD_DEBUG_UART_BAUDRATE; config.enableUart = true; uartDev.flexioBase = BOARD_FLEXIO_BASE; uartDev.TxPinIndex = FLEXIO_UART_TX_PIN; uartDev.RxPinIndex = FLEXIO_UART_RX_PIN; uartDev.shifterIndex[0] = 0U; uartDev.shifterIndex[1] = 1U; uartDev.timerIndex[0] = 0U; uartDev.timerIndex[1] = 1U; FLEXIO_UART_Init(&uartDev, &config, FLEXIO_CLOCK_FREQUENCY); FLEXIO_UART_TransferCreateHandle(&uartDev, &g_uartHandle, FLEXIO_UART_UserCallback, NULL); FLEXIO_UART_TransferStartRingBuffer(&uartDev, &g_uartHandle, g_rxRingBuffer, RX_RING_BUFFER_SIZE); /* Send g_tipString out. */ xfer.data = g_tipString; xfer.dataSize = sizeof(g_tipString) - 1; txOnGoing = true; FLEXIO_UART_TransferSendNonBlocking(&uartDev, &g_uartHandle, &xfer); /* Wait send finished */ while (txOnGoing) { } /* Start to echo. */ sendXfer.data = g_txBuffer; sendXfer.dataSize = ECHO_BUFFER_SIZE; receiveXfer.data = g_rxBuffer; receiveXfer.dataSize = ECHO_BUFFER_SIZE; while (1) { /* If g_txBuffer is empty and g_rxBuffer is full, copy g_rxBuffer to g_txBuffer. */ if ((!rxBufferEmpty) && (!txBufferFull)) { memcpy(g_txBuffer, g_rxBuffer, ECHO_BUFFER_SIZE); rxBufferEmpty = true; txBufferFull = true; } /* If RX is idle and g_rxBuffer is empty, start to read data to g_rxBuffer. */ if ((!rxOnGoing) && rxBufferEmpty) { rxOnGoing = true; FLEXIO_UART_TransferReceiveNonBlocking(&uartDev, &g_uartHandle, &receiveXfer, &receivedBytes); if (ECHO_BUFFER_SIZE == receivedBytes) { rxBufferEmpty = false; rxOnGoing = false; } } /* If TX is idle and g_txBuffer is full, start to send data. */ if ((!txOnGoing) && txBufferFull) { txOnGoing = true; FLEXIO_UART_TransferSendNonBlocking(&uartDev, &g_uartHandle, &sendXfer); } /* Delay some time, simulate the app is processing other things, input data save to ring buffer. */ i = 0x10U; while (i--) { __NOP(); } } }