From a27e76bfa75e5c1e27f454506241ca3ee2524acf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Mon, 13 Mar 2023 22:30:02 +0100 Subject: [PATCH] [realtek-ambz] Backport UART fix from structure-refactor --- .../cores/arduino/SerialClass.cpp | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/arduino/realtek-ambz/cores/arduino/SerialClass.cpp b/arduino/realtek-ambz/cores/arduino/SerialClass.cpp index 8b15ea8..62c265a 100644 --- a/arduino/realtek-ambz/cores/arduino/SerialClass.cpp +++ b/arduino/realtek-ambz/cores/arduino/SerialClass.cpp @@ -45,6 +45,19 @@ void SerialClass::begin(unsigned long baudrate, uint16_t config) { // RUART_STOP_BIT_1 / RUART_STOP_BIT_2 uint8_t stopBits = (config & SERIAL_STOP_BIT_MASK) == SERIAL_STOP_BIT_2; + switch ((uint32_t)data.uart) { + case UART0_REG_BASE: + RCC_PeriphClockCmd(APBPeriph_UART0, APBPeriph_UART0_CLOCK, ENABLE); + break; + case UART1_REG_BASE: + RCC_PeriphClockCmd(APBPeriph_UART1, APBPeriph_UART1_CLOCK, ENABLE); + break; + } + + Pinmux_Config(pinInfo(this->rx)->gpio, PINMUX_FUNCTION_UART); + Pinmux_Config(pinInfo(this->tx)->gpio, PINMUX_FUNCTION_UART); + PAD_PullCtrl(pinInfo(this->rx)->gpio, GPIO_PuPd_UP); + UART_InitTypeDef cfg; UART_StructInit(&cfg); cfg.WordLen = dataWidth; @@ -60,11 +73,12 @@ void SerialClass::begin(unsigned long baudrate, uint16_t config) { data.buf = new RingBuffer(); } - Pinmux_Config(pinInfo(this->rx)->gpio, PINMUX_FUNCTION_UART); - Pinmux_Config(pinInfo(this->tx)->gpio, PINMUX_FUNCTION_UART); - VECTOR_IrqUnRegister(this->irq); VECTOR_IrqRegister(callback, this->irq, (uint32_t)&data, 10); + VECTOR_IrqEn(this->irq, 10); + + UART_RxCmd((UART_TypeDef *)data.uart, ENABLE); + UART_INTConfig((UART_TypeDef *)data.uart, RUART_IER_ERBI, ENABLE); } void SerialClass::end() {