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為輸入