2020-02-05

2020-02-05  本文已影响0人  等一个人咖啡_2c04

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;

}

}

上一篇下一篇

猜你喜欢

热点阅读