本文章 來自原創專欄《ESP32教學專欄 (基于ESP-IDF)》,講解如何使用 ESP-IDF 構建 ESP32 程式,發布文章并會持續為已發布文章添加新內容! 每篇文章都經過了精打細磨!
↓↓↓通過下方對話框進入專欄主頁↓↓↓
CSDN 請求進入專欄 _ O x
是否進入ESP32教學專欄(基于ESP-IDF)?
確定
ESP-IDF 是由樂鑫Espressif官方提供的一套ESP32系列SoC的物聯網開發套件(Espressif IoT Development Framework)提供了從工程創建,編譯,燒錄,除錯,量產等的完整解決方案,本文將介紹如何在Windows下搭建ESP-IDF開發環境,
敬告:
① 如果你想使用Arduino來開發ESP32,目前可參考的資料較多,請讀者自行查閱,
② 使用Arduino開發ESP32,很難發揮ESP32的全部實力,強烈推薦相關專業人士或技術愛好者轉為 ESP-IDF 開發,
③ ESP-IDF是樂鑫官方推薦的SDK,
注意:
下文的 “開發環境” 和 “編程環境” 的含義并非相同
編程環境:指代碼撰寫的人機互動環境,例如使Clion IDE或者VS Code等工具對開發環境的耦合和優化,
開發環境:指ESP-IDF工程的建立,配置,編譯,除錯,量產等基礎操作的環境,開發環境不包含編程環境
文章目錄
- (一)開發環境搭建
- 一、方法一:使用官方提供的安裝器
- 1、安裝器簡介
- 2、安裝器安裝程序
- 二、方法二,使用命令列安裝
- 1、安裝 `git for windows`
- 2、獲取 ESP-IDF
- 3、安裝所需工具
- ① 使用PowerShell
- ② 使用 cmd (命令提示符)
- ③ 指定 espressif 的 git 服務器
- 4、檢查前邊的作業是否成功
- (二)idf.py 基本操作使用
- (三)【全網獨家】對開發環境的優化,使其更好與IDE耦合
- 一、鎖定Python路徑
- 二、鎖定交叉編譯工具鏈路徑
- (四)【全網獨家】Clion IDE For Windows 下 ESP-IDF 編程環境搭建
在文章開始之前,先感受一下Clion帶來的流暢絲滑的變成體驗吧!
① 絲滑頭檔案

② 絲滑結構體

③ 絲滑提示

(一)開發環境搭建
一、方法一:使用官方提供的安裝器
1、安裝器簡介
為簡化Windows下對ESP-IDF開發環境的安裝,樂鑫官方提供了Windows下ESP-IDF開發環境的快速安裝其器,有在線安裝版和離線安裝版兩個版本,
-
在線安裝:在線安裝可以安裝 ESP-IDF 的所有版本,在安裝程序中,安裝程式只下載必要的依賴檔案,包括 Git For Windows 安裝器,在線安裝程式會將下載的檔案存盤在快取目錄
%userprofile%/espressif中,而IDF的存放目錄可自定義, -
離線安裝:離線安裝程式不需要任何網路連接,安裝程式中包含了所有需要的依賴檔案,包括 Git For Windows 安裝器,
2、安裝器安裝程序
此安裝程式會遵循以下步驟進行安裝:
- 安裝必要的組件:
① 內置的 Python(多數腳本由python撰寫,需要使用python執行,為防止干擾到其他的python,安裝器會提供一個內置的python)
② 交叉編譯器(這是在電腦上編譯ESP32可執行檔案必要的編譯器,由于為在一種平臺上編譯出另一平臺上的可執行檔案,故稱“交叉編譯器”)
③ OpenOCD(針對高級用戶,這是ESP32進行JTAG除錯必要的組件,同樣也支持STLink對stm32進行在線除錯)
④ CMake 和 Ninja 編譯工具 (這是連接源檔案和交叉編譯器的橋梁工具)
⑤ ESP-IDF (這即為開發包,包含了ESP32系列的庫檔案和例程代碼,以及其他重要的工程依賴項) - 配置相關環境變數
- 提供通過命令列快速使用idf工具的快捷方式
然而,官方提供的安裝器并非十全十美,安裝程序中可能會出現各種問題,而且相對第二種方法(命令列)錯誤不容易定位,
因此這里給出一個折中的方法,對于使用安裝器的安裝,優先使用離線安裝器,離線安裝不成功且錯誤很難修復的,使用第二種命令列法在線安裝ESP-IDF,
若使用Windows下官方提供的安裝器,請參考官方文章:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/windows-setup.html#get-started-windows-tools-installer
下載一個合適版本的安裝器,最好使用離線安裝器,安裝一個合適版本的IDF,(本文發布時,最新穩定版為v4.3.2)
請務必了解:!!!!!!!!
- 安裝器默認ESP-IDF放置路徑默認填的是“
你的桌面\esp-idf”,強烈不推薦使用此路徑,建議改成"D:\esp-idf"等 - 安裝器默認IDF工具安裝路徑默認為“
你的個人檔案夾\.espressif”(例如 Windows10 或 Windows11 為“C:\Users\你的用戶名\.espressif”),包含上文除了ESP-IDF其他的組件,此路徑不建議更改!使用默認即可,全部安裝大約占用 800M 左右的儲存空間, - 無論如何,請保證兩者安裝路徑不得包含
空格、特殊符號、非Ascii字符如漢字等,如果你的用戶名包含上述內容也不行,務必更改安裝路徑,如果有疑問,請評論區留言或私信博主,
二、方法二,使用命令列安裝
使用安裝器進行離線安裝不成功且錯誤很難修復的,使用第二種命令列法在線安裝ESP-IDF
1、安裝 git for windows
方法很多,不再贅述,確保git安裝成功且能在命令列中使用
安裝成功
PS D:\> git
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
[--super-prefix=<path>] [--config-env=<name>=<envvar>]
<command> [<args>]
These are common Git commands used in various situations:
...
安裝失敗,或環境變數未設定
PS D:\> sdsd
sdsd : 無法將“sdsd”項識別為 cmdlet、函式、腳本檔案或可運行程式的名稱,請檢查名稱的拼寫,如
果包括路徑,請確保路徑正確,然后再試一次,
2、獲取 ESP-IDF
進入你想放置ESP-IDF檔案夾的目錄,然后執行以下命令獲取esp-idf(git會自動創建esp-idf檔案夾)
例如:進入目錄D:\,使用cd命令
PS C:\Users\Augtons> cd d:\
PS D:\>
① 例如,獲取4.3.2版本發行版,(在此文章發布時,此為最新的穩定版,可能將來會成為舊版)
PS D:\> git clone -b v4.3.2 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.3.2
git會自動創建esp-idf-v4.3.2檔案夾
② 再如,獲取master分支(通常不是發行版,也可能不是穩定版,如果你并不確定自己要使用哪個版本,而是僅僅是想要入門ESP32開發,建議使用此命令克隆master分支)
PS D:\> git clone --recursive https://github.com/espressif/esp-idf.git
git會自動創建esp-idf檔案夾
如果你想要獲取其他版本,請從ESP-IDF官方github或者gitee查看最新發行版,并使用提供的對應版本的命令列
Github 發行版頁 :https://github.com/espressif/esp-idf/tags
Gitee 發行版頁:https://gitee.com/EspressifSystems/esp-idf/releases
3、安裝所需工具
默認IDF工具安裝路徑默認為“你的個人檔案夾\.espressif”(例如 Windows10 或 Windows11 為“C:\Users\你的用戶名\.espressif”),包含上文除了ESP-IDF其他的組件,雖然官方提供了這個安裝目錄的更改方法,但是此路徑仍然不建議更改
① 使用PowerShell
PowerShell 進入到 esp-idf目錄,路徑和檔案名支持使用Tab補全
PS D:\> cd esp-idf
PS D:\esp-idf\> .\install.ps1
如果系統提示類似下文的資訊,請更改使用命令提示符安裝
PS D:\esp-idf> .\export.ps1
.\export.ps1 : 無法加載檔案 D:\esp-idf\export.ps1,因為在此系統上禁止運行腳本,有關詳細資訊,請參閱 https:/go.microsoft
.com/fwlink/?LinkID=135170 中的 about_Execution_Policies,
所在位置 行:1 字符: 1
Win + R 鍵打開運行,輸入cmd即可打開命令提示符
② 使用 cmd (命令提示符)
cmd與powershell不同的是,cmd切換盤符不能用cd命令,參考第一行
C:\Users\Augtons> d:
D:\> cd esp-idf
D:\esp-idf> install.bat
如果安裝程序很慢,或者中途有無法連接服務器等不順利的情況,請按如下方案進行安裝,
③ 指定 espressif 的 git 服務器
如果安裝程序很慢,或者中途有無法連接服務器等不順利的情況,請指定 espressif 的 git 服務器,
添加一個系統環境變數IDF_GITHUB_ASSETS內容為dl.espressif.com/github_assets,

再使用①或②完成下面的作業
4、檢查前邊的作業是否成功
全部安裝成功后,在esp-idf目錄下用cmd執行export.bat
D:\esp-idf> export.bat
如果出現如下輸出,即前邊的作業成功
Done! You can now compile ESP-IDF projects.
Go to the project directory and run:
idf.py build
(二)idf.py 基本操作使用
① 創建一個名為NAME的工程
PS xxx\> idf.py create-project NAME
② 打開menuconfig 工程配置選單
PS xxx\工程根目錄> idf.py menuconfig
③ 編譯
PS xxx\工程根目錄> idf.py build
④ 燒錄
#指定燒錄埠,以COM3為例
PS xxx\工程根目錄> idf.py -p COM3 flash
#自動檢測埠(從最大的開始檢測)
PS xxx\工程根目錄> idf.py flash
⑤ 監視器(使用Ctrl+]退出監視器)
#指定監視埠,以COM3為例
PS xxx\工程根目錄> idf.py -p COM3 monitor
#自動檢測埠(從最大的開始檢測)
PS xxx\工程根目錄> idf.py monitor
⑥ 使用組合命令(同樣使用Ctrl+]退出監視器)
idf.py的命令可以組合使用
如:編譯+燒錄+監視
#指定燒錄 & 監視的埠,以COM3為例
PS xxx\工程根目錄> idf.py -p COM3 build flash monitor
#自動檢測埠(從最大的開始檢測)
PS xxx\工程根目錄> idf.py build flash monitor
對于其他的功能,請使用
--help打開幫助,如下
Commands:行之后即為idf.py所有命令,本文不再贅述PS D:\> idf.py --help Usage: idf.py [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]... ESP-IDF CLI build management tool. For commands that are not known to idf.py an attempt to execute it as a build system target will be made. Options: --version Show IDF version and exit. --list-targets Print list of supported targets and exit. -C, --project-dir PATH Project directory. -B, --build-dir PATH Build directory. -w, --cmake-warn-uninitialized / -n, --no-warnings Enable CMake uninitialized variable warnings for CMake files inside the project directory. (--no-warnings is now the default, and does not need to be specified.) The default value can be set with the IDF_CMAKE_WARN_UNINITIALIZED environment variable. -v, --verbose Verbose build output. --preview Enable IDF features that are still in preview. --ccache / --no-ccache Use ccache in build. Disabled by default. The default value can be set with the IDF_CCACHE_ENABLE environment variable. -G, --generator [Ninja|MinGW Makefiles] CMake generator. -D, --define-cache-entry TEXT Create a cmake cache entry. This option can be used at most once either globally, or for one subcommand. -b, --baud INTEGER Baud rate for flashing. The default value can be set with the ESPBAUD environment variable. This option can be used at most once either globally, or for one subcommand. -p, --port TEXT Serial port. The default value can be set with the ESPPORT environment variable. This option can be used at most once either globally, or for one subcommand. --help Show this message and exit. Commands: all Aliases: build. Build the project. app Build only the app. app-flash Flash the app only. bootloader Build only bootloader. bootloader-flash Flash bootloader only. build-system-targets Print list of build system targets. clean Delete build output files from the build directory. confserver Run JSON configuration server. create-component Create a new component. create-project Create a new project. efuse_common_table Generate C-source for IDF’s eFuse fields. efuse_custom_table Generate C-source for user's eFuse fields. encrypted-app-flash Flash the encrypted app only. encrypted-flash Flash the encrypted project. erase_flash Erase entire flash chip. erase_otadata Erase otadata partition. flash Flash the project. fullclean Delete the entire build directory contents. gdb Run the GDB. gdbgui GDB UI in default browser. gdbtui GDB TUI mode. menuconfig Run "menuconfig" project configuration tool. monitor Display serial output. openocd Run openocd from current path partition_table Build only partition table. partition_table-flash Flash partition table only. post_debug Utility target to read the output of async debug action and stop them. python-clean Delete generated Python byte code from the IDF directory read_otadata Read otadata partition. reconfigure Re-run CMake. set-target Set the chip target to build. show_efuse_table Print eFuse table. size Print basic size information about the app. size-components Print per-component size information. size-files Print per-source-file size information. uf2 Generate the UF2 binary with all the binaries included uf2-app Generate an UF2 binary for the application only
(三)【全網獨家】對開發環境的優化,使其更好與IDE耦合
我們知道,在之前我們使用idf.py之前都執行了一個export.bat,實際上,這個bat檔案有擴充環境變數的行為,擴充之后,才能正常使用idf.py工具,
不幸的是,export.bat對環境變數的擴充并非永久的,這是樂鑫官方防止因為此擴充而影響到原本的環境變數,因此,樂鑫要求每次手動執行export.bat來臨時擴充環境變數,這個擴充只能影響當前命令列視窗,視窗一旦關閉,下次使用又要執行export.bat來手動擴充,
這樣做雖然有好處,但是由于此方案只對當前命令列視窗生效,因此,這不利于在IDE中使用ESP-IDF,因為IDE并沒有命令列視窗這個概念,(即使你在IDE自帶的終端中執行了export.bat,但IDE的其他服務如加載CMake專案等操作并不在你手動執行擴充的終端里執行,因此這套方案對IDE的支持并不現實)你可能曾經嘗試在IDE中加載ESP-IDF工程,但是以失敗告終,原因就在于此
網上的其他方法比如在Windows系統環境變數里加入export.bat擴充的那些路徑,但是這樣做缺點很明顯,這樣做是永久設定環境變數,因此會影響到其他地方,例如,你的電腦里有自己的Python環境,再將ESP-IDF內置的Python環境加入環境變數會沖突(系統只會使用相對靠前的路徑)因此,這方法雖然可行,但是影響過大,
博主花費了一段時間,閱讀esp-idf的cmake腳本源代碼之后,分析出了一種更好的方法,
下面介紹這種全網首創的方法,鎖定相關路徑,
一、鎖定Python路徑
打開esp-idf下的tools\cmake檔案夾,
例如D:\esp-idf-v4.3.2\tools\cmake\
分別打開build.cmake和project.cmake,搜索set_default,找到類似下方的文本
注意:不同版本的esp-idf中這句話的位置可能不同,甚至可能只在一個檔案中出現,但是不用擔心,只要保證把所有的地方找到并按下文操作即可
如果你的電腦里有vscode,可以直接用vscode打開esp-idf下的tools\cmake目錄,直接搜索
set_default再逐個點開檢查即可,
將 set_default(python "python") 或 set_default(PYTHON "python") 后邊引號中的python改成esp-idf內置的python的 絕對路徑,在.espressif檔案夾內
參考上文 “(一) - 一 - 2 安裝器安裝程序”
或 “(一) - 二 - 3 —— 安裝所需工具”
例如若路徑為C:\Users\用戶名\.espressif\python_env\idf4.3_py3.8_env\Scripts\python.exe
則
set_default(python "python")
↓改為
set_default(python "C:\Users\用戶名\.espressif\python_env\idf4.3_py3.8_env\Scripts\python.exe")
/******************/
set_default(PYTHON "python")
↓改為
set_default(PYTHON "C:\Users\用戶名\.espressif\python_env\idf4.3_py3.8_env\Scripts\python.exe")
請按照自己的實際情況來,
二、鎖定交叉編譯工具鏈路徑
打開esp-idf下的tools\cmake檔案夾,
例如D:\esp-idf-v4.3.2\tools\cmake\
找到所有形如toolchain-esp**.cmake的檔案,打開

以toolchain-esp32.cmake舉例,檔案很短,有如下幾行
set(CMAKE_C_COMPILER xtensa-esp32-elf-gcc)
set(CMAKE_CXX_COMPILER xtensa-esp32-elf-g++)
set(CMAKE_ASM_COMPILER xtensa-esp32-elf-gcc)
我們也要將xtensa-esp32-elf-gcc等替換成其絕對路徑,例如這個工具鏈可能在
C:\Users\用戶名\.espressif\tools\xtensa-esp32-elf\esp-2020r3-8.4.0\xtensa-esp32-elf\bin\目錄下
因此
set(CMAKE_C_COMPILER C:\Users\用戶名\.espressif\tools\xtensa-esp32-elf\esp-2020r3-8.4.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-gcc.exe)
set(CMAKE_CXX_COMPILER C:\Users\用戶名\.espressif\tools\xtensa-esp32-elf\esp-2020r3-8.4.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-g++.exe)
set(CMAKE_ASM_COMPILER C:\Users\用戶名\.espressif\tools\xtensa-esp32-elf\esp-2020r3-8.4.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-gcc.exe)
改好保存即可
其余的以此類推,其余的所有工具鏈都在C:\Users\用戶名\.espressif\tools\下,按照檔案名找即可,本文不在贅述,改好保存即可
(四)【全網獨家】Clion IDE For Windows 下 ESP-IDF 編程環境搭建
本文默認大家已經成功安裝Clion,安裝方法自行查閱,很簡單,本文不再贅述,
參考本文(二)idf.py基本操作使用,創建一個工程,
用Clion打開這個工程,選擇加載CMake專案(無彈窗則自動加載)
加載程序中可能出現找不到cmake檔案的錯誤,如下圖,是環境變數中缺少IDF_PATH原因導致,可以按照以下方法完成修復,

下文之所以后邊分了兩種情況,是因為esp32的
ESP-IDF和esp8266的RTOS SDK都用到了這個IDF_PATH環境變數,可能會造成沖突,請讀者根據自己的情況選擇合適的方法,
【一】電腦里沒有 ESP8266 RTOS SDK 且 之后不打算使用RTOS SDK開發esp8266的,可永久指定IDF_PATH路徑,一勞永逸


【二】電腦里已經安裝過 ESP8266 RTOS SDK 或 之后打算使用RTOS SDK開發esp8266的,并與ESP-IDF共存的,需要打開該工程根目錄下的CMakeLists.txt,指定未找到的cmake檔案的絕對路徑

將前邊的$ENV{IDF_PATH}替換成真實路徑,例如
include(D:\esp-idf\tools\cmake\project.cmake)
或者,參考方法一,分別建立IDF32_PATH和IDF8266_PATH兩個環境變數,分別改成esp-idf路徑和esp8266-rtos-sdk的路徑,之后在此CMakeLists.txt改成如下即可
include($ENV{IDF32_PATH}\tools\cmake\project.cmake)
如果你是按照前文所述方法的安裝的esp-idf,則不再會有其他的錯誤,如果仍然有錯誤,歡迎評論區留言或私信,祝大家搭建順利!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/395382.html
標籤:其他
上一篇:facebook鏈接的檢查串列是FB頁面還是FB個人資料?
下一篇:帶你從零玩轉云服務器



