Code:
LOCAL void gpio_isr(void *arg)
{
uint32 status = GPIO_REG_READ(GPIO_STATUS_ADDRESS);
if (status & BIT(0))
{
ets_uart_printf("Pressed!\r\n");
// Clear interrupt
GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, status & BIT(0));
}
}
void ICACHE_FLASH_ATTR user_init(void)
{
uart_init(BIT_RATE_115200, BIT_RATE_115200);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U, FUNC_GPIO0);
PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO0_U);
GPIO_DIS_OUTPUT(GPIO_ID_PIN(0));
ETS_GPIO_INTR_DISABLE();
ETS_GPIO_INTR_ATTACH(gpio_isr, 0);
gpio_pin_intr_state_set(GPIO_ID_PIN(0), GPIO_PIN_INTR_NEGEDGE);
ETS_GPIO_INTR_ENABLE();
}
Code:
void new_gpio_isr(uint32 intr_mask, void *arg)
{
ets_uart_printf("int %d\r\n", intr_mask);
if (intr_mask & BIT(0))
{
ets_uart_printf("Pressed!\r\n");
// Clear interrupt
gpio_intr_ack(intr_mask);
}
}
void ICACHE_FLASH_ATTR user_init(void)
{
uart_init(BIT_RATE_115200, BIT_RATE_115200);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U, FUNC_GPIO0);
PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO0_U);
GPIO_DIS_OUTPUT(GPIO_ID_PIN(0));
ETS_GPIO_INTR_DISABLE();
gpio_intr_handler_register(new_gpio_isr, 0);
gpio_pin_intr_state_set(GPIO_ID_PIN(0), GPIO_PIN_INTR_NEGEDGE);
ETS_GPIO_INTR_ENABLE();
}
Statistics: Posted by baoshi — Tue Dec 01, 2015 9:09 pm