2018年7月2日 星期一

DIY - ESP8266:ESP8266 GPIO 應用程式接口函數 (一百零二)

DIY - ESP8266:ESP8266 GPIO 應用程式接口函數 (一百零二):

在 ESP8266 的 Non-OS SDK 內包函有 GPIO 的應用程式接口(API)函數 (Function),但這應用程式接口(API / Application Programming Interface)函數會常常使用在程式上,筆者為了方便,將 GPIO 的函數都放在 Blog 上,隨時可以查閱。

ESP8266 Non-OS SDK GPIO 應用程式接口函數
GPIO 相關接口位于 /ESP8266_NONOS_SDK/include/eagle_soc.h & gpio.h

功能 – GPIO_DIS_OUTPUT(gpio_no) (設置 gpio_no 管腳輸入) - 相關宏
原型:GPIO_DIS_OUTPUT(gpio_no);
參數:gpio_no(0 ~ 15)
返回:無
說明:配置為 GPIO 管腳輸入模式 gpio_output_set(0,0,0, 1<<gpio_no)
範例:GPIO_DIS_OUTPUT(GPIO_ID_PIN(15));

功能 – GPIO_INPUT_GET (獲取 gpio_no 管腳的電平狀態) - 相關宏
原型: GPIO_INPUT_GET(gpio_no)
參數:gpio_no
返回:無
說明:獲取 GPIO 管腳的電平狀態
範例:GPIO_INPUT_GET(12); inpinval = GPIO_INPUT_GET(GPIO_ID_PIN(5));

功能 – gpio_output_set(設置 GPIO 屬性)
原型:gpio_output_set(uint32 set_mask, //設置輸出高電平的位,無則為 0
uint32 clear_mask, //設置輸出低電平的位,無則為 0
uint32 enable_mask, //設置使能輸出位
uint32 disable_mask //設置使能輸入位)
參數:uint32 set_mask : 設置輸出為高的位,對應位為 1,輸出高,對應位為 0,不改變狀態 uint32 clear_mask : 設置輸出為低的位,對應位為1,輸出低,對應位為 0,不改變狀態 uint32 enable_mask : 設置使能輸出的位
uint32 disable_mask : 設置使能輸入的位
返回:無
說明:該函數按照指定的選項配置 GPIO
範例:gpio_output_set(BIT12, 0, BIT12, 0); 設置 GPIO12 輸出為高電平
gpio_output_set(0, BIT12, BIT12, 0); 設置 GPIO12 輸出為低電平
gpio_output_set(BIT12, BIT13, BIT12|BIT13, 0) ; 設置 GPIO12 輸出為高電平, GPIO13 輸出為低電平;
gpio_output_set(0, 0, 0, BIT12); 設置 GPIO12 為輸入
gpio_output_set(BIT2, 0, BIT2, 0); // HIGH gpio_output_set(0, BIT2, BIT2, 0); // LOW

功能 – GPIO_OUTPUT_SET (設置 gpio_no 管腳輸出 bit_value) - 相關宏
原型:GPIO_OUTPUT_SET(gpio_no, bit_value)
參數:gpio_no, bit_value
返回:無
說明:該函數按照指定的選項配置 GPIO
範例:

功能 – GPIO_PIN_PAD_DRIVER_SET (設置開漏電路) - 相關宏
原型:GPIO_PIN_PAD_DRIVER_SET ()
參數:無
返回:
說明:開漏電路(Open-Drain)輸出,則是比 push-pull 少了個 Top Transistor,只有那個 Bottom Transistor。(就像 push-pull 中的那樣)當 Bottom Transistor 關閉,則輸出為高電平。此處沒法輸出高電平,想要輸出高電平,必須外部再接一個上拉電阻(pull-up resistor)。Open-drain 只能夠漏電流(sink current),如果想要集電流(source current),則需要加一個上拉電阻。
範例:GPIO_PIN_PAD_DRIVER_SET(GPIO_PAD_DRIVER_ENABLE)); //開漏電路 open drain;

功能 – GPIO_PIN_SOURCE_SET() - 相關宏
原型:
參數:無
返回:
說明:配置 GPIO 模式為輸模式
範例:

功能 – GPIO_REG_READ (讀取 GPIO 電平狀態) - 相關宏
原型:GPIO_REG_READ(reg)
參數:
返回:uint32
說明:讀取 GPIO 電平狀態
範例:uint32 gpio_status = GPIO_REG_READ(GPIO_STATUS_ADDRESS);

功能 – GPIO_REG_WRITE () - 相關宏
原型:GPIO_REG_WRITE(reg, val)
參數:
返回:無
說明:
範例:GPIO_REG_WRITE( GPIO_STATUS_W1TC_ADDRESS, GPIO_Pin_12|GPIO_Pin_13 ); //clear interrupt mask

功能 – gpio_register_set ()
原型:void gpio_register_set(uint32 reg_id, uint32 value)
參數:
返回:
說明:
範例:gpio_register_set(GPIO_PIN_ADDR(0), GPIO_PIN_INT_TYPE_SET(GPIO_PIN_INTR_DISABLE) | GPIO_PIN_PAD_DRIVER_SET(GPIO_PAD_DRIVER_DISABLE) | GPIO_PIN_SOURCE_SET(GPIO_AS_PIN_SOURCE));

功能 – PIN_FUNC_SELECT (選項 GPIO 管腳功能) - 相關宏
原型:PIN_FUNC_SELECT(PIN_NAME, FUNC)
參數:PIN_NAME,FUNC
返回:無
說明:選項 GPIO 管腳和功能
範例:PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U,FUNC_GPIO2); PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U,FUNC_GPIO15);

GPIO
選項配置
說明
GPIO0
PERIPHS_IO_MUX_GPIO0_U
GPIO0
GPIO1
PERIPHS_IO_MUX_U0TXD_U
GPIO1
GPIO2
PERIPHS_IO_MUX_GPIO2_U
GPIO2
GPIO3
PERIPHS_IO_MUX_U0RXD_U
GPIO3
GPIO4
PERIPHS_IO_MUX_GPIO4_U
GPIO4
GPIO5
PERIPHS_IO_MUX_GPIO5_U
GPIO5
GPIO6
PERIPHS_IO_MUX_SD_CLK_U
GPIO6
GPIO7
PERIPHS_IO_MUX_SD_DATA0_U
GPIO7
GPIO8
PERIPHS_IO_MUX_SD_DATA1_U
GPIO8
GPIO9
PERIPHS_IO_MUX_SD_DATA2_U
GPIO9
GPIO10
PERIPHS_IO_MUX_SD_DATA3_U
GPIO10
GPIO11
PERIPHS_IO_MUX_SD_CMD_U
GPIO11
GPIO12
PERIPHS_IO_MUX_MTDI_U
GPIO12
GPIO13
PERIPHS_IO_MUX_MTCK_U
GPIO13
GPIO14
PERIPHS_IO_MUX_MTMS_U
GPIO14
GPIO15
PERIPHS_IO_MUX_MTDO_U
GPIO15
GPIO16
GPIO16


功能 – PIN_PULLUP_DIS(PIN_NAME) (管脚下拉電阻屏蔽) - 相關宏
原型:PIN_PULLUP_DIS(PIN_NAME)
參數:PIN_NAME
返回:無
說明:控制 GPIO 管腳下拉電阻屏蔽
範例:PIN_PULLDWN_DIS(PERIPHS_IO_MUX_GPIO2_U);

功能 – PIN_PULLUP_EN(PIN_NAME) (管脚上拉電阻使能) - 相關宏
原型:PIN_PULLUP_EN(PIN_NAME)
參數:PIN_NAME
返回:無
說明:控制 GPIO 管腳上拉電阻使能
範例:PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO5_U);

2018年 7月 2日 天氣報告
氣溫:29.0@ 23:00
相對濕度:百分之 80%
天氣:多雲

沒有留言:

張貼留言