Skip to content

Commit a94bc2d

Browse files
authored
fix(UART): sets the correct uart clock source when using begin(baudrate)
1 parent 4d5dc7d commit a94bc2d

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

cores/esp32/esp32-hal-uart.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,7 @@ uart_t *uartBegin(
442442
UART_MUTEX_LOCK();
443443
//User may just want to change some parameters, such as baudrate, data length, parity, stop bits or pins
444444
if (uart->_baudrate != baudrate) {
445-
if (ESP_OK != uart_set_baudrate(uart_nr, baudrate)) {
445+
if (!uartSetBaudRate(uart, baudrate)) {
446446
log_e("UART%d changing baudrate failed.", uart_nr);
447447
retCode = false;
448448
} else {
@@ -800,10 +800,11 @@ void uartFlushTxOnly(uart_t *uart, bool txOnly) {
800800
UART_MUTEX_UNLOCK();
801801
}
802802

803-
void uartSetBaudRate(uart_t *uart, uint32_t baud_rate) {
803+
bool uartSetBaudRate(uart_t *uart, uint32_t baud_rate) {
804804
if (uart == NULL) {
805-
return;
805+
return false;
806806
}
807+
bool retCode = true;
807808
UART_MUTEX_LOCK();
808809
#if !SOC_UART_SUPPORT_XTAL_CLK
809810
soc_module_clk_t newClkSrc = baud_rate <= REF_TICK_BAUDRATE_LIMIT ? SOC_MOD_CLK_REF_TICK : SOC_MOD_CLK_APB;
@@ -812,9 +813,11 @@ void uartSetBaudRate(uart_t *uart, uint32_t baud_rate) {
812813
if (uart_set_baudrate(uart->num, baud_rate) == ESP_OK) {
813814
uart->_baudrate = baud_rate;
814815
} else {
816+
retCode = false;
815817
log_e("Setting UART%d baud rate to %d has failed.", uart->num, baud_rate);
816818
}
817819
UART_MUTEX_UNLOCK();
820+
return retCode;
818821
}
819822

820823
uint32_t uartGetBaudRate(uart_t *uart) {

0 commit comments

Comments
 (0)