VS Code 與 ESP32 官方SDK配置

東邪獨孤 發表於 2021-07-21
VSCode

開發基於 ESP XXX 微控制器應用,最簡單的環境搭建方案是像 MicroPython、CircuitPython、NanoFramework 等,下載韌體,直接開刷;或者基於 Arduino 的開發元件,安裝起來都容易。不過,這些框架是經過封裝的,就目前而言,它們的功能還不完善,功能上肯定沒有樂鑫官方的 SDK 完整;當然了,也不是說這些框架不能用,只要能滿足你的需求就可以用。

樂鑫官方的 SDK 支援 Eclipse 、VS Code 外掛方式使用 IDE。對於我們們一路喜歡 VS 的夥伴來說,當然是用 VS Code 寫程式碼舒服了。本來嘛,在VS Code 中,只要安裝好 ESP - IDF 外掛,然後執行 ESP-IDF: 配置 ESP-IDF 外掛 就會自動下載 SDK 和工具。然而由於某些你懂的不可抗因素,這個方案是很難安裝成功的。SDK 部分多折騰幾次都能下載,但後面那十幾個工具就沒那麼好運氣了,老是失敗。

經過老周的各種嘗試,只有使用離線安裝這一招最靠譜。開啟 https://dl.espressif.com/dl/esp-idf/?idf=4.4

VS Code 與 ESP32 官方SDK配置

Windows 上還是很好弄的(Linux上可以手動下載.tar.gx,然後解壓),上圖中,點選頁面中的 Offline installer,下載離線安裝包,大概 1.5 G,對於現在的網速來說,不算大。

下載之後,直接執行。

VS Code 與 ESP32 官方SDK配置

下一步。

VS Code 與 ESP32 官方SDK配置

這裡它會檢查你的系統環境適不適合安裝,如果沒有問題,Next 安鈕將可用。如果有問題,Apply Fixes 按鈕可用,點一下讓它自動修復問題。其實這裡一般不會有大問題,可能會存在的就是檔名字元資料的限制,點選 Apply Fixes 按鈕即可。然後點 Next。

VS Code 與 ESP32 官方SDK配置

版本當然選新的,安裝目錄這裡最好改一下,這貨很不懂事,居然預設安裝到桌面上。

 

VS Code 與 ESP32 官方SDK配置

上一步選的目錄是放 SDK 的,這一步選的是放 SDK 工具的目錄,自己選一個吧,最好不要帶空格,出錯的概率達到 89.965%;也最好不要包含漢字,出錯率達 92.333%。

 

VS Code 與 ESP32 官方SDK配置

這個地方基本上可以全部清空,如果你要用 Eclipse ,就選上吧。

 

VS Code 與 ESP32 官方SDK配置

這裡讓你核對一下你前面所選的引數是否正確,不符合你的要求的話,就返回去重來。

接著一路下一步,然後坐和等待。

 

VS Code 與 ESP32 官方SDK配置

最後這裡,勾上這個選項,讓防毒軟體跳過對編譯時的檔案掃描。

 

Python 是內建的,這個沒辦法,如果你安裝了多套工具,比如 Thoony、Arduino IDE等,都會內建 Python,所以會多次重複安裝。Python 這貨也是個頭疼事,如果硬碟空間不緊張,就隨它去吧,因為這廝在版本相容問題上也特嚴重,不同程式內建 Python 可能會減少許多問題。

然後幹嗎呢?對,環境變數,開啟【設定】【系統】【關於】。

VS Code 與 ESP32 官方SDK配置

 

 點選“高階系統設定”。

然後在開啟的對話方塊中點選“環境變數”。

VS Code 與 ESP32 官方SDK配置

 

 

至於說配置使用者級的環境變數還是機器級的環境變數,那隨你便,如果電腦是你一個人用的,那無所謂。如果是和“閨蜜”共享一臺電腦,最好配置為使用者級別的,免得“閨蜜”不小心刺探到重要軍情。哈哈,這情節差點變成瓊瑤劇了。

環境變數名為 IDF_PATH,值是SDK的所在路徑,就是你剛剛安裝時選的路徑。例如,C:\\Users\\八格牙路\\esp\\esp-idf,注意要指向 esp-idf,因為檔案是在這個資料夾下面的,指向它才能找到檔案。IDF_TOOLS_PATH 是剛才安裝程式自動設定了的。

VS Code 與 ESP32 官方SDK配置

 

最後,開啟VS Code,安裝 Espressif IDF、C/C++、CMake 等外掛。其實,只要安裝 Espressif IDF 就行,其他的元件會自動安裝。

按【F1】,找到命令“配置ESP IDF擴充套件”,拼命點它就是了,讓它執行。

VS Code 與 ESP32 官方SDK配置

 

 

這貨能識別出我們剛剛安裝的SDK和工具集,選擇第三項,使用已有的配置。

VS Code 與 ESP32 官方SDK配置

 

 

開啟【設定】視窗,找到【擴充套件】【ESP-IDF】,在右面頁面中往下翻,找到配置 Python 解析器的路徑選項,設定成我們剛剛安裝好的內建的Python二進位制檔案。

VS Code 與 ESP32 官方SDK配置

 

 帶有 “Win” 的表示 Windows 平臺專用,如果不這樣配置,那麼那個內建的 Python 就沒有用處了。老周這機器上預設裝的是 Python 3.9 的,實話告訴你,不相容的,會報錯。所以這個路徑必須改成內建的——剛剛安裝時選的 xxxxx\\.espressif 目錄下的。如果你的機器裝的 Py 版本和內建的版本相同,應該能用的,不能用了再改。

還有一處,我們們在把編譯好的 .bin 刷到 ESP32 板子上時,一般我們們買的板子是 Micro-USB 的,所以,燒寫模式是 UART。於是,把 Flash Type 改一下。這個後面你在燒寫是可以改的,不過現在提前改好也省了些功夫。

VS Code 與 ESP32 官方SDK配置

 

 

完工,為了使用一些環境變數能生效,可以重啟一下 VS Code,要是環境變數是配置在機器級別的,估計連電腦也要重啟。

現在,我們們試試能不能用。

1、啟動VSC,開啟一個目錄作為工作區,這個可以隨意發揮。

2、在VS Code中按【F1】,選擇“從擴充套件模板建立專案”。

VS Code 與 ESP32 官方SDK配置

 

 

3、選擇 Use current folder,即使用你開啟的工作目錄。

VS Code 與 ESP32 官方SDK配置

 

 

4、在選擇專案模板時,選最後一個,template-app,這TM很不友好,居然這樣建立專案。

VS Code 與 ESP32 官方SDK配置

 

 

5、這貨真是的,還會開啟一個新的 VS Code 視窗來建立專案。然後讓你選編譯器,反正下面列出的幾個都不是,就選第一項好了 —— Scan Kits。

VS Code 與 ESP32 官方SDK配置

 

 

6、開啟 main / main.c 檔案,把程式碼中 app_main 函式中,後半部分,也就是那個 for 迴圈倒數 10 秒重啟開發板那一段刪掉,不然燒上去後板子老是重啟,不好玩。

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"


void app_main(void)
{
    printf("Hello world!\n");

    /* Print chip information */
    esp_chip_info_t chip_info;
    esp_chip_info(&chip_info);
    printf("This is ESP32 chip with %d CPU cores, WiFi%s%s, ",
            chip_info.cores,
            (chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",
            (chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "");

    printf("silicon revision %d, ", chip_info.revision);

    printf("%dMB %s flash\n", spi_flash_get_chip_size() / (1024 * 1024),
            (chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");
}

app_main 類似於 main 入口點,經過封裝,就像以前寫 Windows 程式那樣,有個 WinMain。

 

7、把 ESP32 開發板連上電腦,按【F1】,選擇命令“選擇要使用的燒錄埠”,然後根據你電腦識別的結果選。

VS Code 與 ESP32 官方SDK配置

 

 

8、點選底部工具欄中的“Build, Flash and Monitor”,這個按鈕可神了,編譯、燒錄、開啟串列埠監視器,三個任務自動完成。

VS Code 與 ESP32 官方SDK配置

 

 

9、然後又是坐和等待,C 語言你懂的,編譯較慢。

VS Code 與 ESP32 官方SDK配置

 

 

VS Code 與 ESP32 官方SDK配置

 

 

注意觀察,如果看到下面這樣的輸出,說明程式成功執行了。

VS Code 與 ESP32 官方SDK配置

 

 

好了,大功告成,ESP 32 + VS Code 的開發環境就搭建好了。