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輸出低電平

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM