void hal_uart_blocking_tx(int port, uint8_t byte) { struct hal_uart *u; if (port >= FSL_FEATURE_SOC_UART_COUNT) { return; } u = &uarts[port]; if (!u->u_configured || !u->u_open) { return; } UART_WriteBlocking(u->u_base, &byte, 1); }
/*! * @brief Main function */ int main(void) { uart_config_t config; BOARD_InitPins(); BOARD_BootClockRUN(); /* * config.baudRate_Bps = 115200U; * config.parityMode = kUART_ParityDisabled; * config.stopBitCount = kUART_OneStopBit; * config.txFifoWatermark = 0; * config.rxFifoWatermark = 1; * config.enableTx = false; * config.enableRx = false; */ UART_GetDefaultConfig(&config); config.baudRate_Bps = BOARD_DEBUG_UART_BAUDRATE; config.enableTx = true; config.enableRx = true; UART_Init(DEMO_UART, &config, CLOCK_GetFreq(DEMO_UART_CLKSRC)); /* Send g_tipString out. */ UART_WriteBlocking(DEMO_UART, g_tipString, sizeof(g_tipString) / sizeof(g_tipString[0])); /* Enable RX interrupt. */ UART_EnableInterrupts(DEMO_UART, kUART_RxDataRegFullInterruptEnable | kUART_RxOverrunInterruptEnable); EnableIRQ(DEMO_UART_IRQn); while (1) { /* Send data only when UART TX register is empty and ring buffer has data to send out. */ while ((kUART_TxDataRegEmptyFlag & UART_GetStatusFlags(DEMO_UART)) && (rxIndex != txIndex)) { UART_WriteByte(DEMO_UART, demoRingBuffer[txIndex]); txIndex++; txIndex %= DEMO_RING_BUFFER_SIZE; } } }