/*! * @brief Main function */ int main(void) { uint8_t ch; lpuart_config_t config; BOARD_InitPins(); BOARD_BootClockRUN(); CLOCK_SetLpuart1Clock(1U); /* * config.baudRate_Bps = 115200U; * config.parityMode = kLPUART_ParityDisabled; * config.stopBitCount = kLPUART_OneStopBit; * config.txFifoWatermark = 0; * config.rxFifoWatermark = 0; * config.enableTx = false; * config.enableRx = false; */ LPUART_GetDefaultConfig(&config); config.baudRate_Bps = BOARD_DEBUG_UART_BAUDRATE; config.enableTx = true; config.enableRx = true; LPUART_Init(DEMO_LPUART, &config, CLOCK_GetFreq(DEMO_LPUART_CLKSRC)); LPUART_WriteBlocking(DEMO_LPUART, txbuff, sizeof(txbuff) - 1); while (1) { LPUART_ReadBlocking(DEMO_LPUART, &ch, 1); LPUART_WriteBlocking(DEMO_LPUART, &ch, 1); } }
void serial_init(serial_t *obj, PinName tx, PinName rx) { uint32_t uart_tx = pinmap_peripheral(tx, PinMap_UART_TX); uint32_t uart_rx = pinmap_peripheral(rx, PinMap_UART_RX); obj->index = pinmap_merge(uart_tx, uart_rx); MBED_ASSERT((int)obj->index != NC); // Need to initialize the clocks here as ticker init gets called before mbed_sdk_init if (SystemCoreClock == DEFAULT_SYSTEM_CLOCK) BOARD_BootClockRUN(); /* Set the LPUART clock source */ if (obj->index == LPUART_0) { CLOCK_SetLpuart0Clock(1U); } else { CLOCK_SetLpuart1Clock(1U); } lpuart_config_t config; LPUART_GetDefaultConfig(&config); config.baudRate_Bps = 9600; config.enableTx = false; config.enableRx = false; LPUART_Init(uart_addrs[obj->index], &config, CLOCK_GetFreq(uart_clocks[obj->index])); pinmap_pinout(tx, PinMap_UART_TX); pinmap_pinout(rx, PinMap_UART_RX); if (tx != NC) { LPUART_EnableTx(uart_addrs[obj->index], true); pin_mode(tx, PullUp); } if (rx != NC) { LPUART_EnableRx(uart_addrs[obj->index], true); pin_mode(rx, PullUp); } if (obj->index == STDIO_UART) { stdio_uart_inited = 1; memcpy(&stdio_uart, obj, sizeof(serial_t)); } }
/*! * @brief Main function */ int main(void) { lpuart_config_t config; BOARD_InitPins(); BOARD_BootClockRUN(); CLOCK_SetLpuart1Clock(1U); /* * config.baudRate_Bps = 115200U; * config.parityMode = kLPUART_ParityDisabled; * config.stopBitCount = kLPUART_OneStopBit; * config.txFifoWatermark = 0; * config.rxFifoWatermark = 0; * config.enableTx = false; * config.enableRx = false; */ LPUART_GetDefaultConfig(&config); config.baudRate_Bps = BOARD_DEBUG_UART_BAUDRATE; config.enableTx = true; config.enableRx = true; LPUART_Init(DEMO_LPUART, &config, CLOCK_GetFreq(DEMO_LPUART_CLKSRC)); /* Send g_tipString out. */ LPUART_WriteBlocking(DEMO_LPUART, g_tipString, sizeof(g_tipString) / sizeof(g_tipString[0])); /* Enable RX interrupt. */ LPUART_EnableInterrupts(DEMO_LPUART, kLPUART_RxDataRegFullInterruptEnable); EnableIRQ(DEMO_LPUART_IRQn); while (1) { /* Send data only when LPUART TX register is empty and ring buffer has data to send out. */ while ((kLPUART_TxDataRegEmptyFlag & LPUART_GetStatusFlags(DEMO_LPUART)) && (rxIndex != txIndex)) { LPUART_WriteByte(DEMO_LPUART, demoRingBuffer[txIndex]); txIndex++; txIndex %= DEMO_RING_BUFFER_SIZE; } } }
void serial_init(serial_t *obj, PinName tx, PinName rx) { uint32_t uart_tx = pinmap_peripheral(tx, PinMap_UART_TX); uint32_t uart_rx = pinmap_peripheral(rx, PinMap_UART_RX); obj->index = pinmap_merge(uart_tx, uart_rx); MBED_ASSERT((int)obj->index != NC); /* Set the LPUART clock source */ if (obj->index == LPUART_0) { CLOCK_SetLpuart0Clock(1U); } else { CLOCK_SetLpuart1Clock(1U); } lpuart_config_t config; LPUART_GetDefaultConfig(&config); config.baudRate_Bps = 9600; config.enableTx = false; config.enableRx = false; LPUART_Init(uart_addrs[obj->index], &config, CLOCK_GetFreq(uart_clocks[obj->index])); pinmap_pinout(tx, PinMap_UART_TX); pinmap_pinout(rx, PinMap_UART_RX); if (tx != NC) { LPUART_EnableTx(uart_addrs[obj->index], true); pin_mode(tx, PullUp); } if (rx != NC) { LPUART_EnableRx(uart_addrs[obj->index], true); pin_mode(rx, PullUp); } if (obj->index == STDIO_UART) { stdio_uart_inited = 1; memcpy(&stdio_uart, obj, sizeof(serial_t)); } }