ESP8266 RTOS 筆記(三)-GPIO(3)_input使用
這篇直接講解怎麼設定esp8266 gpio input 中斷如何使用
實例:
使用上也是非常的簡便!
實例:
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 gpio12 press!\n"); } if(!GPIO_INPUT_GET(GPIO_ID_PIN(13))) { printf("\r\n receive gpio13 press!\n"); } if(!GPIO_INPUT_GET(GPIO_ID_PIN(2))) { printf("\r\n receive gpio2 press!\n"); } if(!GPIO_INPUT_GET(GPIO_ID_PIN(14))) { printf("\r\n receive gpio14 press!\n"); } GPIO_REG_WRITE( GPIO_STATUS_W1TC_ADDRESS,GPIO_Pin_2|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14 ); //clear interrupt mask _xt_isr_unmask(1 << ETS_GPIO_INUM); //Enable the GPIO interrupt }
void buttonInit(void) { GPIO_ConfigTypeDef gpio_in_cfg; gpio_in_cfg.GPIO_IntrType = GPIO_PIN_INTR_NEGEDGE; gpio_in_cfg.GPIO_Mode = GPIO_Mode_Input; gpio_in_cfg.GPIO_Pullup = GPIO_PullUp_EN; gpio_in_cfg.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_2|GPIO_Pin_14; gpio_config(&gpio_in_cfg); //Initialization function GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_2|GPIO_Pin_14);//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 }
使用上也是非常的簡便!
留言
張貼留言