static void uartRxInit() { uint32_t reg_val; PIN_PULLUP_DIS(PERIPHS_IO_MUX_U0TXD_U); PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0RXD_U, FUNC_U0RXD_U0RXD); PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_U0TXD_U0TXD); // reg_val = READ_PERI_REG(UART_CONF1(0)); reg_val = (1 << UART_RXFIFO_FULL_THRHD_S); WRITE_PERI_REG(UART_CONF1_REG(0), reg_val); CLEAR_PERI_REG_MASK(UART_INT_ENA_REG(0), UART_TXFIFO_EMPTY_INT_ENA | UART_RXFIFO_TOUT_INT_ENA); SET_PERI_REG_MASK(UART_INT_ENA_REG(0), UART_RXFIFO_FULL_INT_ENA); printf("Enabling int %d\n", ETS_UART0_INUM); DPORT_REG_SET_FIELD(DPORT_PRO_UART_INTR_MAP_REG, DPORT_PRO_UART_INTR_MAP, ETS_UART0_INUM); DPORT_REG_SET_FIELD(DPORT_PRO_UART1_INTR_MAP_REG, DPORT_PRO_UART1_INTR_MAP, ETS_UART0_INUM); xt_set_interrupt_handler(ETS_UART0_INUM, uartIsrHdl, NULL); xt_ints_on(1 << ETS_UART0_INUM); }
/* * Register an application-specific interrupt handler for GPIO pin * interrupts. Once the interrupt handler is called, it will not * be called again until after a call to gpio_intr_ack. Any GPIO * interrupts that occur during the interim are masked. * * The application-specific handler is called with a mask of * pending GPIO interrupts. After processing pin interrupts, the * application-specific handler may wish to use gpio_intr_pending * to check for any additional pending interrupts before it returns. */ void gpio_intr_handler_register(void *fn, void *arg) { intr_matrix_set(HW_GPIO_INUM, ETS_GPIO_INUM); xt_set_interrupt_handler(ETS_GPIO_INUM, fn, arg); }
static void IRAM_ATTR set_isr_wrapper(int32_t n, void *f, void *arg) { xt_set_interrupt_handler(n, (xt_handler)f, arg); }
void timer0_isr_init(){ xt_set_interrupt_handler(XCHAL_TIMER1_INTERRUPT, timer0_isr_handler, NULL); }