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
}
使用上也是非常的簡便!
留言
張貼留言