mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'buffix/uart_frm_err_parity_err_mismatch' into 'master'
bugfix: uart event mismatch Fix bug of uart frame error and parity error interrupt mismatch in driver code, which will cause the corresponding interrupt can not be cleared correctly, and will finally cause a interrupt watch dog. See merge request !335
This commit is contained in:
commit
8bcd341fca
@ -387,6 +387,7 @@ esp_err_t uart_set_pin(uart_port_t uart_num, int tx_io_num, int rx_io_num, int r
|
||||
|
||||
if(rx_io_num >= 0) {
|
||||
PIN_FUNC_SELECT(GPIO_PIN_MUX_REG[rx_io_num], PIN_FUNC_GPIO);
|
||||
gpio_set_pull_mode(rx_io_num, GPIO_PULLUP_ONLY);
|
||||
gpio_set_direction(rx_io_num, GPIO_MODE_INPUT);
|
||||
gpio_matrix_in(rx_io_num, rx_sig, 0);
|
||||
}
|
||||
@ -397,6 +398,7 @@ esp_err_t uart_set_pin(uart_port_t uart_num, int tx_io_num, int rx_io_num, int r
|
||||
}
|
||||
if(cts_io_num >= 0) {
|
||||
PIN_FUNC_SELECT(GPIO_PIN_MUX_REG[cts_io_num], PIN_FUNC_GPIO);
|
||||
gpio_set_pull_mode(cts_io_num, GPIO_PULLUP_ONLY);
|
||||
gpio_set_direction(cts_io_num, GPIO_MODE_INPUT);
|
||||
gpio_matrix_in(cts_io_num, cts_sig, 0);
|
||||
}
|
||||
@ -639,10 +641,10 @@ static void IRAM_ATTR uart_rx_intr_handler_default(void *param)
|
||||
uart_reg->int_clr.brk_det = 1;
|
||||
uart_event.type = UART_BREAK;
|
||||
} else if(uart_intr_status & UART_FRM_ERR_INT_ST_M) {
|
||||
uart_reg->int_clr.parity_err = 1;
|
||||
uart_reg->int_clr.frm_err = 1;
|
||||
uart_event.type = UART_FRAME_ERR;
|
||||
} else if(uart_intr_status & UART_PARITY_ERR_INT_ST_M) {
|
||||
uart_reg->int_clr.frm_err = 1;
|
||||
uart_reg->int_clr.parity_err = 1;
|
||||
uart_event.type = UART_PARITY_ERR;
|
||||
} else if(uart_intr_status & UART_TX_BRK_DONE_INT_ST_M) {
|
||||
UART_ENTER_CRITICAL_ISR(&uart_spinlock[uart_num]);
|
||||
|
Loading…
Reference in New Issue
Block a user