那麼繼續 ESP-IDF 學習,首先是 GPIO。
使用 ESP-IDF 的 GPIO 首先需要初始化 GPIO 口,需要用到 gpio_config () 函數(指南裡叫它 API)。
使用 gpio_config () 函數需要配置 gpio_mode_t 結構體。
gpio_mode_t 中的成員包括:
-
uint64_t pin_bit_mask
GPIO 引腳,是一個二進制數每位表示一個 GPIO 引腳(這邊寫 "1ull<<x",其中 x 表示引腳號,1ull 是無符號長整型 1) -
gpio_mode_t mode
GPIO 模式(包括輸入輸出開漏推挽之類) -
gpio_pullup_t pull_up_en
GPIO 上拉 -
gpio_pulldown_t pull_down_en
GPIO 下拉 -
gpio_int_type_t intr_type
GPIO 是否觸發中斷
等配置好後調用 gpio_config () 完成 GPIO 初始化。
然後我們通過 gpio_get_level()來讀取輸入引腳電平,gpio_set_level()來更改輸出引腳電平。
下面是實際操作,順便把如何新建項目講了
首先我們打開新建項目向導
如何選擇好項目位置和名稱還有開發板,這裡我是 ESP-WROOM-32,選 ESP-WROVER-KIT 3.3V 就行。
然後直接點右下角這個按鍵
選 template 就行,這就是空項目。
完成創建,接著我們發現沒有自動打開項目,所以還需要點打開文件夾,找到創建的項目文件夾。
打開 main 文件夾裡的 main.c 文件,現在我們寫代碼。
這邊我寫了個簡單的按鈕控制板載 LED 的代碼,可以看到我調用了 freertos 庫,這個不用在意,我只是調用它的 delay 函數來按鍵消抖而已。
然後就是編譯,在那之前我們要先導入 vscode 配置文件,在命令欄裡搜索並選擇
接著先清楚一下編譯數據,然後才點右邊的編譯
編譯完成後我們選擇好端口並燒錄,我這邊是 CH340USB 轉串口,所以選擇 UART 串口燒錄就行
下面是最終實現效果:
那麼 GPIO 就到這裡,什麼?還有其他 GPIO 函數(API)?哈,我們不學。