ESP8266 RTOS SDK使用GPIO中断的方法

来源:互联网 发布:js模式化窗口 编辑:程序博客网 时间:2024/06/05 23:49

下面的函数初始化了GPIO12 和GPIO13下降沿中断 函数说明说下

/****************************************************************************** * FunctionName : gpio_intr_handler * Description  : gpio interrupt callback funtion * Parameters   : void * Returns      : void*******************************************************************************/void gpio_intr_handler(void){    _xt_isr_mask(1<<ETS_GPIO_INUM);    //disable interrupt    os_delay_us(20*1000);//delay 20ms    if(!GPIO_INPUT_GET(GPIO_ID_PIN(12))){        printf("\r\n receive button press!");    }    if(!GPIO_INPUT_GET(GPIO_ID_PIN(13))){        printf("\r\n receive button press2!");    }    GPIO_REG_WRITE( GPIO_STATUS_W1TC_ADDRESS, GPIO_Pin_12|GPIO_Pin_13 ); //clear interrupt mask    _xt_isr_unmask(1 << ETS_GPIO_INUM); //Enable the GPIO interrupt}/****************************************************************************** * FunctionName : buttonInit * Description  : button intt * Parameters   : void * Returns      : NULL*******************************************************************************/void buttonInit(void){      GPIO_ConfigTypeDef gpio_in_cfg;    //Define GPIO Init Structure      gpio_in_cfg.GPIO_IntrType = GPIO_PIN_INTR_NEGEDGE;    //      gpio_in_cfg.GPIO_Mode = GPIO_Mode_Input;    //Input mode      gpio_in_cfg.GPIO_Pullup = GPIO_PullUp_EN;      gpio_in_cfg.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13;    // Enable GPIO      gpio_config(&gpio_in_cfg);    //Initialization function      GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, GPIO_Pin_12|GPIO_Pin_13);//Forbidden ouput register      // Register the interrupt callback function      gpio_intr_handler_register(gpio_intr_handler, NULL);       _xt_isr_unmask(1 << ETS_GPIO_INUM);    //Enable the GPIO interrupt//    _xt_isr_mask(1 << ETS_GPIO_INUM);    //Disable the GPIO interrupt}