ESP8266 RTOS SDK使用GPIO中断的方法

下面的函数初始化了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
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值