ESP8266-SDK的外部中断

一、配置外部中断的步骤

1、选择管脚 PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U,FUNC_GPIO2);//pin脚选择

2、设置对应管脚为输入模式  GPIO_DIS_OUTPUT(GPIO_ID_PIN(2)) ; // 设置成输入

3、设置对应中断的触发方式 触发方式有5种  gpio_pin_intr_state_set(GPIO_ID_PIN(2),GPIO_PIN_INTR_NEGEDGE);//s设置中断触发方式

typedef enum {
    GPIO_PIN_INTR_DISABLE = 0,//不使用中断
    GPIO_PIN_INTR_POSEDGE = 1,//上升沿
    GPIO_PIN_INTR_NEGEDGE = 2,//下降沿
    GPIO_PIN_INTR_ANYEDGE = 3,//双边沿
    GPIO_PIN_INTR_LOLEVEL = 4,//低电平
    GPIO_PIN_INTR_HILEVEL = 5//高电平
} GPIO_INT_TYPE;

4、设置中断的回调函数  ETS_GPIO_INTR_ATTACH(ext_interrupt_callback,NULL);//设置中断回调函数

5、开启中断 ETS_GPIO_INTR_ENABLE();//开启gpio中断

6、回调函数的编写

LOCAL void ext_interrupt_callback(void *arg)
{
uint16 gpio_status = 0;
gpio_status = GPIO_REG_READ(GPIO_STATUS_ADDRESS);//判断io口状态
ETS_GPIO_INTR_DISABLE();//关闭中断


if(GPIO_INPUT_GET(2) == 0)
{
os_printf("触发中断\r\n");
}
os_delay_us(10000);
GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, gpio_status);//清中断标志
ETS_GPIO_INTR_ENABLE();//打开中断
}

中断中主要是要 清除相应中断的标志


按照如上步骤就可以实现外部中断,如果写的不对请看官指出,谢谢

可以参考 官方的接口参考里面的

8B-ESP8266__Interface__GPIO_Registers__Release_15-11-2014.xls

8A-ESP8266__Interface_GPIO__CN_v0.4.pdf


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做了不一定能实现但不做一定不会实现

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值