ESP8266 SDK開發: 外設篇-GPIO輸入檢測


 

 

 

NONOS(2.2.0)

NONOS(2.2.0)

NONOS(2.2.0)

1.官方提供了以下函數檢測引腳輸入狀態

 

 

 

檢測GPIO5

  if( GPIO_INPUT_GET(5) == 0 ) GPIO5當前為低電平

  if( GPIO_INPUT_GET(5) == 1 ) GPIO5當前為高電平

 

 

檢測輸入的第一種方式

  在引腳為輸出的狀態下,檢測引腳輸入狀態

  注:該模式應用於檢測引腳輸出的高低電平狀態.

  

PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO5_U,FUNC_GPIO5);
    GPIO_OUTPUT_SET(5, 1);//設置GPIO5輸出高電平(控制繼電器吸合)
    if(GPIO_INPUT_GET(5) == 1)
    {
        os_printf("\r\n 繼電器引腳輸出高電平 \r\n");
    }

 

 

 

 

 

  

 

    

 

  

 

 

 

 

  另外:如果某個引腳控制傳感器,傳感器本身引腳有很強的拉低能力,也可以用此模式檢測

 列如:開發板的GPIO0外接的按鈕

 

  

 

 

  如想檢測其是否按下:

  PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U , FUNC_GPIO0);

  GPIO_OUTPUT_SET(0, 1);//設置GPIO0輸出高電平

 

  if(GPIO_INPUT_GET(0) == 0)
  {
    //按鈕按下
  }

   原因:

  即使控制引腳輸出了高電平,當按下按鈕的時候,引腳接地,引腳強制被拉低.

  注意:如果所接傳感器的輸出能力不強,則需要看下面第二種方式

 

檢測輸入的第二種方式

補充一個知識點

 設置引腳輸入上拉 PIN_PULLUP_EN(引腳的寄存器地址)

  

 

 

 

  檢測輸入的時候設置管腳為輸入然后再做檢測

  注:該模式主要應用於和芯片之間通信

  以下為檢測GPIO0的輸入

  

  

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U , FUNC_GPIO0);//GPIO0作為普通IO功能(如果以前設置過作為普通IO,不需要重復設置)
    GPIO_DIS_OUTPUT(0);//如果以前設置過GPIO為輸出,則調用此函數關閉GPIO0輸出
    PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO0_U);//上拉輸入

    if(GPIO_INPUT_GET(0) == 0)
    {
        //引腳被拉低
    }

 

 

 

 

RTOS(2.2.0)

RTOS(2.2.0)

RTOS(2.2.0)

  官方提供了以下函數檢測引腳輸入狀態

    

 

  檢測GPIO5

  if( GPIO_INPUT_GET(5) == 0 ) GPIO5當前為低電平

  if( GPIO_INPUT_GET(5) == 1 ) GPIO5當前為高電平

  

 

 

 

 

檢測輸入的第一種方式

  在引腳為輸出的狀態下,檢測引腳輸入狀態

  注:該模式應用於檢測引腳輸出的高低電平狀態.

  PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO5_U , FUNC_GPIO5);

  GPIO_OUTPUT_SET(5, 1);//設置GPIO5輸出高電平(控制繼電器吸合)

  if(GPIO_INPUT_GET(5) == 1)
  {
    printf("\r\n 繼電器引腳輸出高電平 \r\n");
  }

 

  

 

 

 

 

 

 

 

    

 

  

 

 

 

 

  另外:如果某個引腳控制傳感器,傳感器本身引腳有很強的拉低能力,也可以用此模式檢測

 

  列如:開發板的GPIO0外接的按鈕

 

  

 

 

 

 

  如想檢測其是否按下:

  PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U , FUNC_GPIO0);

  GPIO_OUTPUT_SET(0, 1);//設置GPIO0輸出高電平

 

  if(GPIO_INPUT_GET(0) == 0)
  {
    //按鈕按下
  }

 

 

   原因:

  即使控制引腳輸出了高電平,當按下按鈕的時候,引腳接地,引腳強制被拉低.

  注意:如果所接傳感器的輸出能力不強,則需要看下面第二種方式

 

 

 

檢測輸入的第二種方式

  補充一個知識點

  設置引腳輸入上拉 PIN_PULLUP_EN(引腳的寄存器地址)

  

 

 

  

 

 

 

 

  檢測輸入的時候設置管腳為輸入然后再做檢測

  注:該模式主要應用於和芯片之間通信

  以下為檢測GPIO0的輸入

  

  

  // PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U , FUNC_GPIO0);//GPIO0作為普通IO功能(以前設置過作為普通IO,不需要重復設置)

  GPIO_DIS_OUTPUT(0);//如果以前設置過GPIO為輸出,則調用此函數關閉GPIO0輸出
  PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO0_U);//上拉輸入


  if(GPIO_INPUT_GET(0) == 0)
  {
    //引腳被拉低
  }

 

  

 

 

 

 

其它

  配置多個引腳為輸入

  

 

 

 

  GPIO_AS_INPUT(BIT2 | BIT13); //配置GPIO2,GPIO13為輸入

 


免責聲明!

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



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