中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

鄭州網(wǎng)站建設(shè)老牌公司谷歌搜索引擎鏡像入口

鄭州網(wǎng)站建設(shè)老牌公司,谷歌搜索引擎鏡像入口,甘肅省住房和建設(shè)廳官方網(wǎng)站,集安網(wǎng)站制作ESP-IDF Vscode ESP32 開發(fā)環(huán)境搭建以及開發(fā)入門 文章目錄ESP-IDF Vscode ESP32 開發(fā)環(huán)境搭建以及開發(fā)入門1. 前言2. 下載開發(fā)工具3. 配置工具4. 創(chuàng)建工程5. 解決vscode找不到頭文件,波浪線警告6. 添加自己的組件6.1 組件說明6.2 添加項(xiàng)目組件6.3 添加擴(kuò)展組件7. …

ESP-IDF + Vscode ESP32 開發(fā)環(huán)境搭建以及開發(fā)入門

文章目錄

  • ESP-IDF + Vscode ESP32 開發(fā)環(huán)境搭建以及開發(fā)入門
    • 1. 前言
    • 2. 下載開發(fā)工具
    • 3. 配置工具
    • 4. 創(chuàng)建工程
    • 5. 解決vscode找不到頭文件,波浪線警告
    • 6. 添加自己的組件
      • 6.1 組件說明
      • 6.2 添加項(xiàng)目組件
      • 6.3 添加擴(kuò)展組件
    • 7. 解決組件內(nèi)引用 ESP-IDF 內(nèi)函數(shù)、頭文件報(bào)錯(cuò)

創(chuàng)作不易,轉(zhuǎn)載請(qǐng)注明出處!

Tips: 雖然筆者采用的是Linux開發(fā)環(huán)境,但是Windows開發(fā)環(huán)境的亦可閱讀,所述內(nèi)容與系統(tǒng)關(guān)聯(lián)性不大,尤其是后文介紹的如何將自己的文件加入到工程,解決頭文件找不到等問題,無論哪種系統(tǒng)均會(huì)存在。

1. 前言

關(guān)于ESP32的開關(guān)環(huán)境搭建,其實(shí)有很多種,其中如果使用 Vscode 的話,通常大家會(huì)直接使用vscode里面的Espressif IDF插件,然后通過插件安裝對(duì)應(yīng)的配置工具搭建開發(fā)環(huán)境,使用此方法確實(shí)比較方便,操作也比較簡(jiǎn)單,但是此方法存在一定的缺陷,使用此方法搭建的環(huán)境不方便維護(hù),ESP-IDF的版本升級(jí)切換不方便

使用 Espressif IDF 安裝環(huán)境,在 ESP-IDF 目錄下除了存放了 ESP-IDF 工具以外,編譯工具鏈也丟在了這個(gè)里面(在IDF目錄下使用git查看執(zhí)行 git status 即可發(fā)現(xiàn)),兩種文件混合在了一起,會(huì)導(dǎo)致無法單獨(dú)維護(hù),當(dāng)想要升級(jí)ESP-IDF版本的時(shí)候,就必須要把環(huán)境全部重新安裝一遍,而安裝的時(shí)候下載又特別慢,所以這個(gè)過程會(huì)變?yōu)橐粋€(gè)非常麻煩的事情

本文采用的方法稱之為:ESP-IDF + Vscode開發(fā)方法,此方法成功的將 ESP-IDF 工具與編譯工具分離,因此可以單獨(dú)維護(hù),關(guān)于ESP-IDF的版本切換可直接使用git切換即可,十分的方便,同時(shí)編輯器還是采用Vscode,編寫代碼還是很方便

此外,本文除了闡述如何搭建開發(fā)環(huán)境之外,還記載了博主關(guān)于ESP32開發(fā)過程中的相關(guān)筆記,主要介紹了如何采用ESP32的開發(fā)風(fēng)格開始搭建我們自己的工程進(jìn)行開發(fā)。

tips: 推薦使用最新發(fā)布版本的 ESP-IDF,最新的修復(fù)了許多有關(guān)問題!!! 踩過的坑就不要踩了 T…T

2. 下載開發(fā)工具

  1. 下載 IDF 工具
    mkdir -p ~/esp
    cd ~/esp
    git clone --recursive https://github.com/espressif/esp-idf.git
    
  2. 下載 Vscode 軟件
  3. 安裝Vscode插件 Espressif IDF,注意這里下載好就行了,不要去配置
    在這里插入圖片描述

3. 配置工具

  1. 配置 IDF 工具,為所有ESP32設(shè)備環(huán)境
    cd ~/esp/esp-idf
    ./install.sh
    
  2. 設(shè)置環(huán)境變量
    cd ~/esp/esp-idf
    ./export.sh
    
  3. 但是每個(gè)terminator窗口都得像第2步一樣運(yùn)行下export.sh指令,對(duì)應(yīng)的命令窗口才有相應(yīng)的idf環(huán)境變量,非常麻煩,因此需要讓其智能一點(diǎn),在 ~/.bashrc 里面加一個(gè)宏命令
    • 運(yùn)行vi ~/.bashrc,打開 ~/.bashrc ,在最后添加一行命令 alias get_idf='. $HOME/esp/esp-idf/export.sh'
    • 之后每次打開一個(gè)新terminator窗口,只需要輸入 get_idf 命令,即可給對(duì)應(yīng)的 terminator 添加 IDF 的環(huán)境變量在這里插入圖片描述

4. 創(chuàng)建工程

  1. 使用 idf 工具創(chuàng)建工程
    在這里插入圖片描述

  2. 進(jìn)入工程目錄,設(shè)置目標(biāo)設(shè)備,如開發(fā)esp32,則輸入idf.py set-target esp32
    在這里插入圖片描述

  3. 使用vscode打開編輯
    在這里插入圖片描述

5. 解決vscode找不到頭文件,波浪線警告

問題描述:

默認(rèn)使用IDF創(chuàng)建工程之后,可使用 idf.py build編譯工程,但是使用vscode打開工程,添加頭文件之后,vscode會(huì)提示找不到頭文件,以及相應(yīng)宏、函數(shù)無法跳轉(zhuǎn),這是由于vscode沒有配置導(dǎo)致
在這里插入圖片描述

解決方案:

  1. 安裝 Espressif IDF 插件
    在這里插入圖片描述
  2. 進(jìn)入IDF目錄,重新運(yùn)行 install.sh 腳本,此腳本會(huì)配置 Espressif IDF 插件(建議這么操作,因?yàn)槲疫\(yùn)行 ./install.sh 的時(shí)候插件是以及裝好了的)
    cd ~/esp/esp-idf
    ./install.sh
    
  3. 使用vscode打開相應(yīng)工程, 注意vscode打開的是對(duì)應(yīng)的工程路徑,而不是包含多個(gè)工程的路徑
  4. 按快捷鍵 Ctrl + Shift + P 打開命令行, 找到 ESP-IDF:Add vscode configuration folder,點(diǎn)擊一下即可自動(dòng)生成對(duì)應(yīng)的vscode配置文件
    在這里插入圖片描述
  5. 點(diǎn)擊之后可以看到工程目錄下多了一個(gè) .vscode 目錄,并產(chǎn)生了相應(yīng)的文件,其中c_cpp_properties.json 內(nèi)描述的就是對(duì)應(yīng)的頭文件路徑
    在這里插入圖片描述
  6. 之后可以看到波浪線警告消失了,對(duì)應(yīng)的文件也可以通過 ctrl+鼠標(biāo)左鍵 打開在這里插入圖片描述

6. 添加自己的組件

說明:本博客ESP-IDF版本 V5.0

6.1 組件說明

當(dāng)我們開始真正使用ESP32進(jìn)行開發(fā)的時(shí)候,我們肯定期望將我們的程序按照各自的功能,分解成各自的 .c 文件,這樣方便編輯、管理和移植,如GPIO的驅(qū)動(dòng)在單獨(dú)編寫的 drv_gpio.c 內(nèi)實(shí)現(xiàn),那么針對(duì)ESP32如何實(shí)現(xiàn)類似的功能呢?

之前編寫 stm32 的時(shí)候有IDE的支持,IDE自動(dòng)幫我們完成,但是這里Vscode僅僅只是一個(gè)代碼編輯器,關(guān)于代碼的編譯,esp32采用的是Cmake工具來完成, 因此我們需要補(bǔ)充相關(guān)的cmake文件來實(shí)現(xiàn)。

ESP32的組件分為幾大類,均記錄在cmake的變量COMPONENT_DIRS內(nèi):

  • ESP-IDF內(nèi)部組件 IDF_PATH/components
  • 擴(kuò)展組件 EXTRA_COMPONENT_DIRS
  • 項(xiàng)目組件 PROJECT_DIR/components

ESP-IDF內(nèi)部組件:也就是官方提供的組件,在ESP-IDF目錄內(nèi)
擴(kuò)展組件:工程目錄一般長(zhǎng)這樣

- myProject/- CMakeLists.txt- sdkconfig- components/ - component1/ - CMakeLists.txt- Kconfig- src1.c- component2/ - CMakeLists.txt- Kconfig- src1.c- include/ - component2.h- main/       - CMakeLists.txt- src1.c- src2.c- build/

官方文檔是這么解釋的:可選的 “components” 目錄中包含了項(xiàng)目的部分自定義組件,并不是每個(gè)項(xiàng)目都需要這種自定義組件,但它有助于構(gòu)建可復(fù)用的代碼或者導(dǎo)入第三方(不屬于 ESP-IDF)的組件。或者,您也可以在頂層 CMakeLists.txt 中設(shè)置 EXTRA_COMPONENT_DIRS 變量以查找其他指定位置處的組件。

因此擴(kuò)展組件是我們自行添加的目錄,之后通過在頂層CMakeLists.txt中設(shè)置 EXTRA_COMPONENT_DIRS變量指定對(duì)應(yīng)的位置;
項(xiàng)目組件是工程目錄下components目錄下的組件,默認(rèn)沒有這個(gè)目錄,可自行創(chuàng)建

需要注意的是,各組件不同同名,否則會(huì)發(fā)生覆蓋,組件的編譯順序?yàn)?ESP-IDF內(nèi)部組件 -> 擴(kuò)展組件 -> 項(xiàng)目組件,后編譯的組件會(huì)覆蓋之前編譯的同名組件,(此特點(diǎn)也有優(yōu)點(diǎn):允許將組件復(fù)制到項(xiàng)目目錄中再修改以覆蓋ESP-IDF組件,如果使用這種方式,ESP-IDF 目錄本身可以保持不變)

6.2 添加項(xiàng)目組件

  1. 創(chuàng)建 components 目錄
  2. 創(chuàng)建組件
    • 方法一:使用idf命令創(chuàng)建組件:idf.py -C <組件集目錄地址> create-component <component name>
      • 在這里插入圖片描述
    • 方法二:創(chuàng)建對(duì)應(yīng)的目錄并創(chuàng)建對(duì)應(yīng)的源文件,復(fù)制其他組件的CMakeLists.txt文件
  3. 在組件內(nèi)編寫對(duì)應(yīng)的程序即可
    在這里插入圖片描述
  4. 清除工程,之后重新編譯 idf.py clean -> idf.py build
    在這里插入圖片描述

6.3 添加擴(kuò)展組件

一定注意創(chuàng)建的組件名,不要和系統(tǒng)組件名相同,否則會(huì)覆蓋造成報(bào)錯(cuò),除非你主動(dòng)為之,可通過搜索 COMPONENT_DIRS 中的目錄列表以查找項(xiàng)目的組件(搜索方法:在CmakeList.txt中把這個(gè)變量打印出來)

  1. 創(chuàng)建自己存放組件集的組件目錄,之后在組件目錄下創(chuàng)建組件,不能直接創(chuàng)建組件目錄,如這里創(chuàng)建組件集目錄user,在user目錄下創(chuàng)建gpio驅(qū)動(dòng)組件目錄gpio
  2. 復(fù)制其他組件的CMakeLists.txt
    在這里插入圖片描述
  3. 修改組件目錄內(nèi)的CMakeLists.txt
    在這里插入圖片描述
  4. 修改頂層CMakeLists.txt,添加EXTRA_COMPONENT_DIRS指定,注意此添加需要在project()之前,因?yàn)閳?zhí)行project指令的時(shí)候已經(jīng)創(chuàng)建工程了
    在這里插入圖片描述
  5. 編寫對(duì)應(yīng)的drv_gpio.c drv_gpio.h,并在main.c中引用,之后編譯測(cè)試**(先清除工程,之后重新編譯 idf.py clean -> idf.py build)**
    在這里插入圖片描述
    編譯測(cè)試成功在這里插入圖片描述

7. 解決組件內(nèi)引用 ESP-IDF 內(nèi)函數(shù)、頭文件報(bào)錯(cuò)

當(dāng)我們創(chuàng)建好單獨(dú)的組件后,將在單獨(dú)的組件內(nèi)編寫各自的應(yīng)用,如上,我們創(chuàng)建了 gpio 組件,那么相應(yīng)將會(huì)在gpio組件中編寫對(duì)應(yīng)的gpio驅(qū)動(dòng),驅(qū)動(dòng)中肯定會(huì)要應(yīng)用ESP-IDF內(nèi)的組件,但是當(dāng)我們編譯的時(shí)候會(huì)提示找不到相應(yīng)文件。

我們的驅(qū)動(dòng)程序如下:
在這里插入圖片描述
編譯報(bào)錯(cuò):../user/gpio/drv_gpio.c:2:10: fatal error: driver/gpio.h: No such file or directory

這是由于依賴問題沒有解決導(dǎo)致,我們編寫的drv_gpio.c文件沒有指定依賴,那么編譯器將不知道去哪里找這個(gè)driver/gpio.h文件,因此報(bào)錯(cuò),所以我們需要給它加上依賴,修改對(duì)應(yīng)組件的CMakeLists.txt文件,增加 REQUIRES driver 指定依賴driver組件:
在這里插入圖片描述
那么有人肯定會(huì)問,為什么在默認(rèn)的main組件內(nèi)這么寫不會(huì)報(bào)錯(cuò)呢?這是由于main組件是一個(gè)特殊組件,工程的$ENV{IDF_PATH}/tools/cmake/project.cmake 默認(rèn)為其添加了所有依賴

注意修改CMakeLists.txt后清除工程再重新編譯 idf.py clean -> idf.py build


創(chuàng)作不易,轉(zhuǎn)載請(qǐng)注明出處!

關(guān)注、點(diǎn)贊+收藏,可快速查收博主有關(guān)分享!


http://www.risenshineclean.com/news/47656.html

相關(guān)文章:

  • 網(wǎng)站建設(shè)源碼是什么濟(jì)南網(wǎng)站優(yōu)化
  • 網(wǎng)站開發(fā) 定制 多少 錢seo顧問賺錢嗎
  • 中國(guó)做美國(guó)酒店的網(wǎng)站好百度指數(shù)官網(wǎng)首頁(yè)
  • 求做網(wǎng)站的百度統(tǒng)計(jì)怎么用
  • ??谥悄芙ㄕ驹斍榫W(wǎng)站外鏈怎么發(fā)布
  • 合肥網(wǎng)站建設(shè)網(wǎng)站模板如何推廣店鋪呢
  • 長(zhǎng)春做個(gè)人網(wǎng)站做不了超級(jí)軟文
  • 美女做那種視頻網(wǎng)站怎么在百度制作自己的網(wǎng)站
  • 婚紗攝影網(wǎng)站設(shè)計(jì)百度應(yīng)用市場(chǎng)app下載安裝
  • 織夢(mèng)怎么做雙語網(wǎng)站中山口碑seo推廣
  • 有什么網(wǎng)站可以做婚慶視頻新聞今天的最新新聞
  • 如何選擇南京網(wǎng)站建設(shè)橙子建站
  • 家具網(wǎng)站怎么做aso網(wǎng)站
  • 做h5的免費(fèi)軟件提升seo排名平臺(tái)
  • 網(wǎng)站建設(shè)的開發(fā)方式外貿(mào)網(wǎng)站優(yōu)化推廣
  • 大連做網(wǎng)站的公司有哪些網(wǎng)上教育培訓(xùn)機(jī)構(gòu)排名
  • 廣漢網(wǎng)站建設(shè)2022年最新最有效的營(yíng)銷模式
  • 壽光專業(yè)做網(wǎng)站網(wǎng)絡(luò)營(yíng)銷推廣策略有哪些
  • 山東網(wǎng)站建設(shè).com關(guān)鍵詞挖掘查詢工具愛站網(wǎng)
  • 上百度推廣 免費(fèi)做網(wǎng)站泰安百度公司代理商
  • 房租 做網(wǎng)站百度網(wǎng)頁(yè)版鏈接
  • 建設(shè)綜合購(gòu)物網(wǎng)站建站abc
  • 視頻網(wǎng)站建設(shè) 方案網(wǎng)絡(luò)營(yíng)銷的類型
  • 優(yōu)化對(duì)網(wǎng)站真的非常有用嗎廣告聯(lián)盟怎么加入
  • 東營(yíng)建設(shè)信息網(wǎng)老網(wǎng)站深圳百度地圖
  • wordpress 獲取文章圖片標(biāo)題網(wǎng)絡(luò)營(yíng)銷優(yōu)化
  • 維啟網(wǎng)站建設(shè)商品推廣軟文800字
  • 餐飲手機(jī)微網(wǎng)站怎么做今日頭條熱搜
  • wordpress菜單右上角北侖seo排名優(yōu)化技術(shù)
  • 怎么做誠(chéng)信通網(wǎng)站的店招鄭州網(wǎng)絡(luò)推廣代理顧問