Надо сделать прием данных по UART. Открыл sdout.c, там уже, вроде как всё готово:
Затем я внутри uart0_rx_intr_handler сделал инкремент определенной переменной. Передаю с терминала данные на rx модуля - переменная не инкрементируется и esp виснет, черед несколько сек происходит перезагрузка.
Подскажите, пожалуйста, как организовать прием данных по юарту?
PS: так же включен второй юарт, по нем данные только передаются.
Спасибо!
Код:
LOCAL void
uart0_rx_intr_handler(void *para)
{
uint8 uart_no = UART0;
if (UART_RXFIFO_FULL_INT_ST == (READ_PERI_REG(UART_INT_ST(uart_no)) & UART_RXFIFO_FULL_INT_ST))
{
WRITE_PERI_REG(UART_INT_CLR(uart_no), UART_RXFIFO_FULL_INT_CLR);
}
}
void ICACHE_FLASH_ATTR stdoutInit() {
/* rcv_buff size if 0x100 */
ETS_UART_INTR_ATTACH(uart0_rx_intr_handler, &(UartDev.rcv_buff));
//Enable TxD pin
PIN_PULLUP_DIS(PERIPHS_IO_MUX_U0TXD_U);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_U0TXD);
//Set baud rate and other serial parameters to 115200,n,8,1
uart_div_modify(0, UART_CLK_FREQ/BIT_RATE_115200);
WRITE_PERI_REG(UART_CONF0(0), (STICK_PARITY_DIS)|(ONE_STOP_BIT << UART_STOP_BIT_NUM_S)| \
(EIGHT_BITS << UART_BIT_NUM_S));
//Reset tx & rx fifo
SET_PERI_REG_MASK(UART_CONF0(0), UART_RXFIFO_RST|UART_TXFIFO_RST);
CLEAR_PERI_REG_MASK(UART_CONF0(0), UART_RXFIFO_RST|UART_TXFIFO_RST);
//set rx fifo trigger
WRITE_PERI_REG(UART_CONF1(0),
((0x01 & UART_RXFIFO_FULL_THRHD) << UART_RXFIFO_FULL_THRHD_S) |
((0x01 & UART_RX_FLOW_THRHD) << UART_RX_FLOW_THRHD_S) |
UART_RX_FLOW_EN);
//Install our own putchar handler
os_install_putc1((void *)stdoutPutchar);
//clear all interrupt
WRITE_PERI_REG(UART_INT_CLR(0), 0xffff);
//enable rx_interrupt
SET_PERI_REG_MASK(UART_INT_ENA(0), UART_RXFIFO_FULL_INT_ENA);
ETS_UART_INTR_ENABLE();
}
Подскажите, пожалуйста, как организовать прием данных по юарту?
PS: так же включен второй юарт, по нем данные только передаются.
Спасибо!