zoukankan      html  css  js  c++  java
  • ESP8266 SDK开发: 外设篇-GPIO输出高低电平

    开发板原理图

      一,LED(GPIO2)

        

      二,继电器(GPIO5)

        

      

    NONOS(2.2.0)

    NONOS(2.2.0)

    NONOS(2.2.0)

    1.设置GPIO输出高低电平

     

    设置GPIO2输出高电平

    GPIO_OUTPUT_SET(2, 1);

     

    设置GPIO2输出低电平

    GPIO_OUTPUT_SET(2, 0);

    不过正常流程是先设置这个引脚的功能

    PIN_FUNC_SELECT(IO口的寄存器地址 , 功能)

    举例1:配置 GPIO2作为普通IO

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U , FUNC_GPIO2);

    举例2:配置 GPIO2作为串口功能

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U  , FUNC_UART1_TXD_BK );

      说一下: FUNC_UART1_TXD_BK 这个我具体也不知道是什么意思,只知道可能是作为串口1的TX输出

    举例3:配置 GPIO5作为普通IO功能

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO5_U, FUNC_GPIO5 );

    注: 这一个是默认的功能

      

       注:在配置完PIN_FUNC_SELECT 以后,当前引脚为高阻态,既不是高电平也不是低电平.

    测试(GPIO2输出高电平点亮LED)

    #include "gpio.h"

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U , FUNC_GPIO2);

    GPIO_OUTPUT_SET(2, 1);//设置GPIO2输出高电平

    测试(GPIO2输出低电平,GPIO5输出高电平控制继电器吸合)

    #include "gpio.h"

    GPIO_OUTPUT_SET(2, 0);//设置GPIO2输出低电平

    GPIO_OUTPUT_SET(5, 1);//设置GPIO5输出高电平

    如果控制有SPI功能的引脚,需要写上一句话,否则不能控制

    WRITE_PERI_REG(PERIPHS_IO_MUX, 0x105);

    RTOS(2.2.0)

    RTOS(2.2.0)

    RTOS(2.2.0)

      官方提供了两个函数

      

      

    GPIO_OUTPUT_SET(gpio_no, bit_value)

    设置GPIO2输出高电平

    GPIO_OUTPUT_SET(2, 1);

    设置GPIO2输出低电平

    GPIO_OUTPUT_SET(2, 0);

    GPIO_OUTPUT(gpio_bits, bit_value)

    官方提供的一次性设置多个引脚函数

    设置GPIO2和GPIO5输出高电平

    GPIO_OUTPUT(BIT2 | BIT5, 1);

    设置GPIO2和GPIO5输出低电平

    GPIO_OUTPUT(BIT2 | BIT5, 0);

    不过正常流程是先设置这个引脚的功能

    PIN_FUNC_SELECT(IO口的寄存器地址 , 功能)

    举例1:配置 GPIO2作为普通IO

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U , FUNC_GPIO2);

    举例2:配置 GPIO2作为串口功能

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U  , FUNC_UART1_TXD_BK );

      说一下: FUNC_UART1_TXD_BK 这个我具体也不知道是什么意思,只知道可能是作为串口1的TX输出

    举例3:配置 GPIO5作为普通IO功能

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO5_U, FUNC_GPIO5 );

     

    注: 这一个是默认的功能

      

       注:在配置完PIN_FUNC_SELECT 以后,当前引脚为高阻态,既不是高电平也不是低电平.

      

    测试(GPIO2输出高电平点亮LED)

    #include "gpio.h"

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U , FUNC_GPIO2);

    GPIO_OUTPUT_SET(2, 1);//设置GPIO2输出高电平

    测试(GPIO2输出低电平,GPIO5输出高电平控制继电器吸合)

    #include "gpio.h"

    GPIO_OUTPUT_SET(2, 0);//设置GPIO2输出低电平

    GPIO_OUTPUT_SET(5, 1);//设置GPIO5输出高电平

    测试(GPIO2输出低电平,GPIO5输出低电平)

    #include "gpio.h"

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U , FUNC_GPIO2);
    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO5_U , FUNC_GPIO5);

    GPIO_OUTPUT(BIT2 | BIT5, 0);//设置GPIO2和GPIO5输出低电平

  • 相关阅读:
    如何设计web系统的监控
    RedisCluster的rename机制失败报错,解决又是数据倾斜问题
    学习大数据基础资源收集与分享
    用过滤器实现日志记录
    HttpClient 教程
    【公告】
    【2020赛季训练实录】
    【BZOJ5415&UOJ393】归程(Kruskal重构树,最短路)
    【BZOJ3545&BZOJ3551】Peaks(kruskal重构树,主席树,dfs序)
    【CF1263E】Editor(线段树,栈)
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/11982939.html
Copyright © 2011-2022 走看看