美文网首页
2020-02-05

2020-02-05

作者: 等一个人咖啡_2c04 | 来源:发表于2020-02-05 20:24 被阅读0次

    ESP8266的输入输出函数及流水代码编写

    GPIO输出

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U, FUNC_GPIO4);

     // GPIO4设为IO口

    GPIO_OUTPUT_SET(GPIO_ID_PIN(4),1); //GPIO4=1(高电平)

     

    PIN_FUNC_SELECT(PIN_NAME,FUNC) 管脚功能选择

    GPIO_OUTPUT_SET(gpio_no, bit_value) 设置 gpio_no 管脚输出 bit_value,与上一节的输出高低电平的示例相同。

     

     

    PIN_PULLUP_DIS(PIN_NAME) 管脚上拉屏蔽 PIN_PULLUP_EN(PIN_NAME) 管脚上拉使能

    【PIN_NAME】  管脚名称  PERIPHS_IO_MUX_ “+”“管脚名“

    【FUNC】    管脚功能   功能序号   - 1

    gpio_no】  IO端口序号    GPIO_ID_PIN(IO端口序号)

     

     

     

     

     

     

     

    GPIO输入

     

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U, FUNC_GPIO0);

    //GPIO_O设为IO口

    GPIO_DIS_OUTPUT(GPIO_ID_PIN(0))// GPIO_O失能输出

    PIN_PULLUP_DIS(PERIPHS_IO_MUX_GPIO0_U)

    // GPIO_O失能内部上拉

    While(1)

    {

    if(GPIO_INPUT_GET (GPIO_ID_PIN(0))==0)

    GPIO_OUTPUT_SET(GPIO_ID_PIN(4),0);

    }

     

     

    GPIO_DIS_OUTPUT(gpio_no) 设置 gpio_no 管脚输入,与上一节的设置输示例相同。

     GPIO_INPUT_GET(gpio_no) 获取 gpio_no 管脚的电平状态。

    LED流水灯

    #include "ets_sys.h"

    #include "osapi.h"

    #include "user_interface.h"

    #define LED1_OFF GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 1) //LED1熄灭

    #define LED2_OFF  GPIO_OUTPUT_SET(GPIO_ID_PIN(15), 0)    //LED2熄灭

    #define LED3_OFF  GPIO_OUTPUT_SET(GPIO_ID_PIN(14), 1)    //LED3熄灭

    #define LED1_ON    GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 0)    //LED1点亮

    #define LED2_ON    GPIO_OUTPUT_SET(GPIO_ID_PIN(15), 1)    //LED2点亮

    #define LED3_ON    GPIO_OUTPUT_SET(GPIO_ID_PIN(14), 0)    //LED3点亮

    u8 LED_sta=1;

    void timer_testTask(void);  //函数声明,定时器回调函数

    void ICACHE_FLASH_ATTR user_init(void)

    {

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12); //设置GPIO12位IO模式

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U,FUNC_GPIO15);  //设置GPIO15位IO模式

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U,FUNC_GPIO14);  //设置GPIO14位IO模式

    /*使用自动填装模式,每次定时器到时的时候,都会按照500ms的设置,再次定时500ms*/

    hw_timer_init(1,1);                //使用NMI中断源,自动填装

    hw_timer_set_func(timer_testTask);  //设置回调函数

    hw_timer_arm(500*1000);            //单位是us,定时的最大值1677.721ms,在此定时500ms

    }

    /*--------------------------------------------------------------*/

    /*函数功能:定时器回调函数                                                                                */

    /*参      数:无                                                                                                      */

    /*返      回:无                                                                                                      */

    /*注      意:最为硬件定时器的回调函数,不能使用 ICACHE_FLASH_ATTR宏      */

    /*-------------------------------------------------------------*/

    void timer_testTask(void)

    {

    switch(LED_sta)

    {

    case 1:LED_AllOff();

      LED1_ON;

          LED_sta=2;

          break;

    case 2:LED_AllOff();

      LED2_ON;

      LED_sta=3;

      break;

    case 3:LED_AllOff();

      LED3_ON;

      LED_sta=1;

      break;

    }

    }

    相关文章

      网友评论

          本文标题:2020-02-05

          本文链接:https://www.haomeiwen.com/subject/bshexhtx.html