ESP8266 SDK开发: 外设篇-GPIO中断检测

直接上代码

#include "gpio.h"

//设置GPIO0下降沿中断

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U , FUNC_GPIO0);//GPIO0做为普通IO使用
    GPIO_DIS_OUTPUT(0);//0:GPIO0    如果以前设置过GPIO为输出,则调用此函数关闭GPIO0输出
    PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO0_U);//GPIO0上拉输入

    _xt_isr_mask(1<<ETS_GPIO_INUM);    //关闭GPIO中断
    gpio_intr_handler_register(gpio0_intr_handler, NULL);//设置中断函数
    gpio_pin_intr_state_set(0, GPIO_PIN_INTR_NEGEDGE);//0:GPIO0        GPIO_PIN_INTR_NEGEDGE:下降沿触发
    _xt_isr_unmask(1 << ETS_GPIO_INUM); //使能GPIO中断

//GPIO0中断回调函数

void gpio0_intr_handler()
{
    uint32 gpio_status = GPIO_REG_READ(GPIO_STATUS_ADDRESS);//读取GPIO状态寄存器,获取中断信息
    GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, gpio_status);//清除中断信息
    if(gpio_status & (BIT(0)))//GPIO0产生的中断
    {
        if(!GPIO_INPUT_GET(0))//GPIO0是低电平    GPIO0确实是下降沿产生了中断
        {
            printf("GpioDown\r\n");
        }
    }
}

测试

按下按钮

  

扩展:配置GPIO4

//设置GPIO4下降沿中断

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U , FUNC_GPIO4);//GPIO4做为普通IO使用
    GPIO_DIS_OUTPUT(4);//4:GPIO4    如果以前设置过GPI4为输出,则调用此函数关闭GPIO4输出
    PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO4_U);//GPIO4上拉输入

    _xt_isr_mask(1<<ETS_GPIO_INUM);    //关闭GPIO中断
    gpio_intr_handler_register(gpio4_intr_handler, NULL);//设置中断函数
    gpio_pin_intr_state_set(4, GPIO_PIN_INTR_NEGEDGE);//4:GPIO4        GPIO_PIN_INTR_NEGEDGE:下降沿触发
    _xt_isr_unmask(1 << ETS_GPIO_INUM); //使能GPIO中断

//GPIO4中断回调函数

void gpio4_intr_handler()
{
    uint32 gpio_status = GPIO_REG_READ(GPIO_STATUS_ADDRESS);//读取GPIO状态寄存器,获取中断信息
    GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, gpio_status);//清除中断信息
    if(gpio_status & (BIT(4)))//GPIO4产生的中断
    {
        if(!GPIO_INPUT_GET(4))//GPIO4是低电平    GPIO4确实是下降沿产生了中断
        {
            printf("GpioDown\r\n");
        }
    }
}

原文地址:https://www.cnblogs.com/yangfengwu/p/12305933.html

时间: 2024-10-09 16:09:56

ESP8266 SDK开发: 外设篇-GPIO中断检测的相关文章

ESP8266 LUA脚本语言开发: 外设篇-GPIO中断检测

https://nodemcu.readthedocs.io/en/master/modules/gpio/#gpiomode 测试引脚 GPIO0 gpio.mode(3,gpio.INT) function GpioDown() print("GpioDown") end gpio.trig(3,"down",GpioDown) 按下按钮 提示: 打印多个是因为按钮抖动 原文地址:https://www.cnblogs.com/yangfengwu/p/1203

ESP8266 LUA脚本语言开发: 外设篇-GPIO输入检测

咱使用 GPIO0 https://nodemcu.readthedocs.io/en/master/modules/gpio/#gpioread 第一种 GPIO设置为输出的状态下读取引脚状态 gpio.mode(3, gpio.OUTPUT) gpio.write(3, gpio.HIGH) if gpio.read(3) == 1 then print("GPIO0 is HIGH") end 可以检测继电器输出的状态,自行扩展! 第二种 GPIO设置为输入的状态下.检测GPIO

ESP8266 LUA脚本语言开发: 外设篇-GPIO输出高低电平

原文地址:https://www.cnblogs.com/yangfengwu/p/12037968.html

ESP8266 LUA脚本语言开发: 外设篇-定时器,延时,看门狗

https://nodemcu.readthedocs.io/en/master/modules/tmr/ local mytimer1 = tmr.create() function TimeFunction1() print("1S 循环定时器") end mytimer1:register(1000, 1, TimeFunction1) mytimer1:start() local mytimer2 = tmr.create() function TimeFunction2()

PI Square中文论坛: PI SDK 开发中级篇| PI Square

注: 为了更好的利用站内资源营造一个更好的中文开发资源空间,本文为转发修正帖,原作者为OSIsoft技术工程师王曦(Xi Wang),原帖地址:PI SDK 中级篇 来源:https://d.gg363.site/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=2ahUKEwjJ3-HLrP3eAhXJULwKHWSqBloQFjADegQIBxAB&url=https%3A%2F%2Fpisquare.os

ESP8266 SDK开发: 综合篇-C#上位机串口通信控制ESP8266

实现的功能 1.C#串口上位机通过串口控制继电器 控制继电器吸合      控制继电器断开      说明 1,请用户先学习这一节 https://www.cnblogs.com/yangfengwu/p/12382103.html   编写C#串口调试助手 2.控制继电器引脚 协议规定 上位机串口发送给ESP8266控制继电器吸合指令: 0xaa  0x55  0x01 0x01 ESP8266执行以后回复: 0x55  0xaa  0x01 0x01 上位机串口发送给ESP8266控制继电器

ESP8266 SDK开发: 开发环境搭建(NONOS 2.2.0)

前言 最近发现有些用户使用的是NONOS版本的SDK 考虑到只要是会使用RTOS版本的用户基本上都会使用NONOS版本 而会使用NONOS的用户大部分都不会使用RTOS版本 故后期的教程以NONOS版本为主,RTOS版本为辅 整个文章按照NONOS版本为主线编写,最后说明和RTOS版本的区别 导入工程 咱们用NONOS 2.2.0版本 导入NONOS 2.2.0版本 1.按照上一节安装好软件以后 把这个工程解压到 2.File -> Import 下载程序 生成的bin文件位置 咱现在不需要IA

ESP8266 SDK开发: 综合篇-8266TCP服务器与Android TCP客户端实现无线网络通信控制

实现的功能 Android TCP客户端连接8266的TCP服务器,网络控制开发板继电器 1.控制继电器吸合 2.控制继电器断开 前言 1.用户在看这一节之前请先学习 https://www.cnblogs.com/yangfengwu/p/12543923.html   Android TCP客户端 https://www.cnblogs.com/yangfengwu/p/12543847.html   8266 TCP服务器 2.控制继电器引脚 协议规定 Android TCP客户端发送给E

ESP8266 SDK开发: 综合篇-8266TCP服务器与C#TCP客户端实现无线网络通信控制

实现的功能 前言 1.用户在看这一节之前请先学习 https://www.cnblogs.com/yangfengwu/p/12397146.html   C# TCP客户端 https://www.cnblogs.com/yangfengwu/p/12393478.html   8266 TCP服务器 2.控制继电器引脚 协议规定 C#TCP客户端发送给ESP8266TCP服务器控制继电器吸合指令: 0xaa  0x55  0x01 0x01 ESP8266执行以后回复给C#TCP客户端: 0