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 函數結構件及其它(三十一)
沒有留言:
張貼留言