Skip to content

Commit 69daf13

Browse files
authored
fix(uart): uart begin does not set the clock source when baudrate changes
1 parent 2a3de9c commit 69daf13

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

cores/esp32/esp32-hal-uart.c

+6-3
Original file line numberDiff line numberDiff line change
@@ -588,7 +588,7 @@ uart_t *uartBegin(
588588
UART_MUTEX_LOCK();
589589
//User may just want to change some parameters, such as baudrate, data length, parity, stop bits or pins
590590
if (uart->_baudrate != baudrate) {
591-
if (ESP_OK != uart_set_baudrate(uart_nr, baudrate)) {
591+
if !uartSetBaudRate(uart, baudrate)) {
592592
log_e("UART%d changing baudrate failed.", uart_nr);
593593
retCode = false;
594594
} else {
@@ -972,10 +972,11 @@ void uartFlushTxOnly(uart_t *uart, bool txOnly) {
972972
UART_MUTEX_UNLOCK();
973973
}
974974

975-
void uartSetBaudRate(uart_t *uart, uint32_t baud_rate) {
975+
bool uartSetBaudRate(uart_t *uart, uint32_t baud_rate) {
976976
if (uart == NULL) {
977-
return;
977+
return false;
978978
}
979+
bool retCode = true;
979980
UART_MUTEX_LOCK();
980981
#if SOC_UART_SUPPORT_XTAL_CLK // ESP32-S3, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-H2 and ESP32-P4
981982
soc_module_clk_t newClkSrc = UART_SCLK_XTAL;
@@ -996,9 +997,11 @@ void uartSetBaudRate(uart_t *uart, uint32_t baud_rate) {
996997
log_v("Setting UART%d baud rate to %d.", uart->num, baud_rate);
997998
uart->_baudrate = baud_rate;
998999
} else {
1000+
retCode = false;
9991001
log_e("Setting UART%d baud rate to %d has failed.", uart->num, baud_rate);
10001002
}
10011003
UART_MUTEX_UNLOCK();
1004+
return retCode;
10021005
}
10031006

10041007
uint32_t uartGetBaudRate(uart_t *uart) {

0 commit comments

Comments
 (0)