2018年11月15日 星期四

DIY - ESP32:ESP32 常用 GPIO 應用程式接口函數(三十二)

DIY - ESP32:ESP32 常用 GPIO 應用程式接口函數(三十二):

ESP32 有很多新的 GPIO API 接口函數,設定也有不同方法,由於 ESP32 方法是不全完相同,所以記錄下來作參考。

GPIO 設定:
gpio_pad_select_gpio(GPIO_NUM_16);  // GPIO16 選擇
GPIO gpio_set_direction(GPIO_NUM_16, GPIO_MODE_OUTPUT);  // GPIO16 作輸出
gpio_set_level(BLINK_GPIO, 0);  // GPIO16 作為輸出低電平

GPIO 結構體設定:
gpio_config_t io_conf;
io_conf.intr_type = GPIO_PIN_INTR_DISABLE;         //限制中斷
io_conf.mode = GPIO_MODE_OUTPUT;                    //選擇為輸出模式
io_conf.pin_bit_mask = GPIO_OUTPUT_PIN_SEL;  //配置 GPIO_OUT寄存器
io_conf.pull_down_en = 0;    //禁止下拉
io_conf.pull_up_en = 0;         //禁止上拉
gpio_config(&io_conf);         //最後配置使能

輸入輸出模式:
GPIO_MODE_INPUT               輸入
GPIO_MODE_OUTPUT          輸出
GPIO_MODE_OUTPUT_OD  開漏輸出
GPIO_MODE_INPUT_OUTPUT_OD  開漏輸入輸出
GPIO_MODE_INPUT_OUTPUT          輸入輸出

中斷類型:
GPIO_INTR_DISABLE  - 禁用 GPIO 中斷
//中斷類型:
GPIO_INTR_POSEDGE GPIO  上升沿
GPIO_INTR_NEGEDGE            下降沿
GPIO_INTR_ANYEDGE             上升沿和下降沿
GPIO_INTR_LOW_LEVEL         輸入低電平觸發
GPIO_INTR_HIGH_LEVEL         輸入高電平觸發

上下拉使能:
GPIO_PULLUP_DISABLE          禁用GPIO上拉電阻
GPIO_PULLUP_ENABLE           啟用GPIO上拉電阻
GPIO_PULLDOWN_DISABLE   禁用GPIO下拉電阻
GPIO_PULLDOWN_ENABLE    啟用GPIO下拉電阻

驅動能力:
GPIO_DRIVE_CAP_0     weak
GPIO_DRIVE_CAP_1    
GPIO_DRIVE_CAP_2    預設值
GPIO_DRIVE_CAP_DEFAULT  預設值
GPIO_DRIVE_CAP_3                 最強

輸出低電平:
gpio_set_level(BLINK_GPIO, 0); //第一個參數是 GPIO, 第二個是 0 1

const portTickType xDelay = 500 / portTICK_RATE_MS;  // 掛起500ms
while (1) { printf(" Current Gpio16 Level is : %d \r\n\r\n",
                 gpio_get_level(BLINK_GPIO));
                 vTaskDelay(xDelay);
}

相關網址:
※ DIY – ESP32:ESP32 GPIO 功能資源(九)
※ DIY - ESP32:ESP32 GPIO API 應用程式接口函數(三十)
※ DIY - ESP32:ESP32 GPIO API 函數結構件及其它(三十一)

沒有留言:

張貼留言