最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

用clion自帶的platformIO和開(kāi)發(fā)esp32!!!

2020-05-05 12:42 作者:keysking  | 我要投稿

太愛(ài)Jetbrains了!!!?

上次用煩了keil寫stm32,Clion馬上給俺整了個(gè)2019.1更新,直接整合了stm32CubeMX,從此拋棄keil.詳見(jiàn):

????最近畢設(shè)選擇了用esp32,然后用platformIO來(lái)做為開(kāi)發(fā)平臺(tái).(不得不說(shuō),platformIO真不愧是新時(shí)代嵌入式開(kāi)發(fā)神器啊,感覺(jué)嵌入式開(kāi)發(fā)的體驗(yàn)一下子進(jìn)入了21世紀(jì).真心勸沒(méi)有了解過(guò)的小伙伴們了解一下.)

platformIO固然是非常不錯(cuò)的

但是! platformIO的推薦平臺(tái)是vscode!!!?

對(duì),也就是那個(gè)充滿贊譽(yù)的vscode.?

不得不說(shuō),vscode也固然不錯(cuò),只要你不用它寫c++.


或許是我被Jetbrains寵壞了,vscode+platformIO的c++編寫體驗(yàn)真的是令我難受得抓耳撓腮.

代碼提示瞎提示,不編譯就不更新錯(cuò)誤提示,按?+點(diǎn)擊瞎跳轉(zhuǎn)......

難受得我呀,都產(chǎn)生幻覺(jué)了,總感覺(jué)有這么個(gè)人在準(zhǔn)備接單:

黑人抬棺


????當(dāng)然,platformIO也不是不可以用clion,畢竟它還支持cli命令行模式,大不了用命令行建個(gè)工程,再自己精心寫一份cmake就可以用了...

但...這體驗(yàn)也實(shí)在是太差了,折騰不起,折騰不起...

就在我今天實(shí)在是受不了了,決定折騰就折騰吧的時(shí)候,驚奇地發(fā)現(xiàn)!

CLion 2020.1更新!!!! (狂喜.jpg)

CLion 2020.1 EAP: IAR Toolchain, PlatformIO Plugin, and Updates to Change Signature Refactoring(https://blog.jetbrains.com/clion/2020/03/clion-2020-1-eap-iar-platformio-change-signature/)

PlatformIO Plugin!!!?

PlatformIO Plugin!!!?

PlatformIO Plugin!!!

立馬照著PlatformIO官網(wǎng)和Clion的更新博客一頓操作,安裝成功.

經(jīng)過(guò)試用,相當(dāng)舒爽~

python環(huán)境

platfromIO 需要python環(huán)境,so,裝一個(gè)python3的環(huán)境吧...

安裝方式網(wǎng)上一堆,我就不贅述了,

安裝PlatformIO

安裝

安裝PlatformIO Core,在Mac或者linux下,只需執(zhí)行下面三條命令中的任意一條就行:

python3 -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/develop/scripts/get-platformio.py)"

# or using `curl`

curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py -o get-platformio.py

python3 get-platformio.py

# or using `wget`

wget https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py -O get-platformio.py

python3 get-platformio.py

而在Windows上,你需要先下載這個(gè)get-platformio.py
然后用python運(yùn)行它

# run it?

python get-platformio.py

設(shè)置環(huán)境變量
為了你能在命令行里使用platform命令,你需要配置一下環(huán)境變量
mac或者linux下,建議也不用配置啥環(huán)境變量了,直接整個(gè)軟連接吧:

ln -s ~/.platformio/penv/bin/platformio /usr/local/bin/platformio?

ln -s ~/.platformio/penv/bin/pio /usr/local/bin/pio?

ln -s ~/.platformio/penv/bin/piodebuggdb /usr/local/bin/piodebuggdb

而windows的小伙伴,把C:\Users\你的用戶名\.platformio\penv\Scripts加到Path環(huán)境變量里就好了.
(不會(huì)加環(huán)境變量就百度吧,嘻嘻)

安裝CLion

emmmm,安裝CLion...也屬于基礎(chǔ)操作.
略.
(突然感受到一絲參考答案編寫老師的快感)
(記得版本要大于2020.1啊)

給Clion安裝PlatformIO Plugin

這也是相當(dāng)簡(jiǎn)單啦,先打開(kāi)CLion的插件管理器,然后搜索platformio,點(diǎn)install安裝就好了.

給Clion安裝PlatformIO Plugin

這也是相當(dāng)簡(jiǎn)單啦,先打開(kāi)CLion的插件管理器,然后搜索platformio,點(diǎn)install安裝就好了.

安裝完成后,記得重啟一下CLion哦.

使用

emmmm,就這么簡(jiǎn)單,安裝就完成了,接下來(lái)就是使用了.我們來(lái)整一個(gè)程序試試.

platformIO支持特別多芯片和開(kāi)發(fā)板平臺(tái),我這里就用最近在用的esp32舉個(gè)例子.

????首先,CLion新建工程頁(yè)面,我們可以發(fā)現(xiàn),多了一個(gè)PlatformIO的選項(xiàng),直接點(diǎn)一下,就可以看到右邊可以選擇各種開(kāi)發(fā)板和其框架. 這里我就選用DOIO ESP32 DEVKIT V1這塊板子(其實(shí)我手里的不是官方版,這里面可能沒(méi)有,但芯片一樣就行),然后使用Arduino的框架.(Arduino那么多庫(kù),不用白不用,哈哈哈哈哈)


等PlatformIO init跑完之后吶,就可以看到生成的PlatformIO項(xiàng)目目錄結(jié)構(gòu)了.

好,我們先來(lái)試試寫一個(gè)Hello world程序練練手, 打開(kāi)src目錄下的main.c文件,整個(gè)Arduino的標(biāo)準(zhǔn)Hello world:

emmmm,寫是寫完了,可這Serial咋是紅的啊?

其實(shí),仔細(xì)想想就知道,因?yàn)槿思襍erial是C++的語(yǔ)句...咱當(dāng)然不能在main.c里用啊.

首先,把名字改成main.cpp:

然后,再右鍵,Reload CMake Project重載一下CMake工程:


完美~

接下來(lái)測(cè)試一下,首先,將板子跟之前一樣接到電腦上.

然后注意右上角,將運(yùn)行任務(wù)切換到upload.

(注意到?jīng)]有!默認(rèn)是debug啊,這說(shuō)明可以Debug啊,太爽了,不過(guò)我還沒(méi)用用,就先不說(shuō)了)

最后點(diǎn)小綠三角,運(yùn)行upload.

程序先編譯后上傳,如果一切無(wú)誤,程序就會(huì)被上傳到esp32上.

此時(shí),打開(kāi)Terminal,輸入platformio device monitor,就可以打開(kāi)串口監(jiān)視器,查看串口輸出.

串口監(jiān)視器的比特率默認(rèn)是9600.如果你想換一下的話,比如115200,除了把代碼中的Serial.begin(9600)換成Serial.begin(115200)以外,還需要在platformio.ini中加一句monitor_speed = 115200,否則會(huì)出現(xiàn)亂碼.


使用第三方庫(kù)

豐富的第三方庫(kù)資源是PlatformIO的強(qiáng)大優(yōu)勢(shì)之一,我們來(lái)舉個(gè)例子.

就拿我手頭的DHT22傳感器來(lái)說(shuō)吧,這是一個(gè)比較常見(jiàn)的溫濕度監(jiān)測(cè)傳感器.

我們先打開(kāi)PlatformIO的Libraries registry(https://platformio.org/lib), 搜索DHT22看看:


我們看見(jiàn)第一個(gè)庫(kù)就不錯(cuò),有39214次下載使用,而且也支持我們使用的平臺(tái),點(diǎn)進(jìn)去看看:

在庫(kù)的詳情頁(yè)面,有很多東西,其中我們最需要關(guān)心的是Example和Installation

其中Example中會(huì)教我們?nèi)绾问褂眠@個(gè)庫(kù),而Installation則是告訴我們?cè)趺窗惭b.

我們先來(lái)安裝,打開(kāi)Installation,可以找到這么一塊代碼:

這是PlatformIO比較推薦的一種安裝方式,就像npm的package.json或者Java的Maven的Pom一樣,它建議你直接將需要的庫(kù)依賴寫在platform.ini中即可

所以我們選擇其中的一行,寫在platform.ini的lib_deps中:


然后再點(diǎn)綠色小三角運(yùn)行,就會(huì)發(fā)現(xiàn)編譯過(guò)程中有下載依賴的行為.

不過(guò)還是編譯失敗了,這可能是個(gè)小bug??

編譯器會(huì)提醒某些在第三方庫(kù)中引用的頭文件不存在,但是此時(shí)如果我們?cè)谖覀冏约旱墓こ讨幸眠@些頭文件,卻可以正確引用,而且,引用了之后,第三方庫(kù)也不再會(huì)報(bào)頭文件不存在.很迷...2333


我這里是告訴我Wire.hSPI.h不存在,這是很常用的Arduino的頭文件,不會(huì)不存在的,我將其在main.cpp中引用一下,報(bào)錯(cuò)就沒(méi)了.


(對(duì)了,在再次上傳程序之前,記得把Terminal中的串口監(jiān)視器用ctrl+c關(guān)掉,唉,這是稍微不優(yōu)雅的一個(gè)地方)

接下來(lái),我就根據(jù)Example中的代碼,寫一個(gè)DHT22的小Demo吧:

嗯?寫是寫完了,不對(duì)啊,這dht.h怎么引不進(jìn)來(lái)啊? DHT的使用也是紅的,這明顯不對(duì)啊.

emmm,這可能也是個(gè)小bug? 不過(guò),也好解決.

這不就是找不到頭文件嘛~簡(jiǎn)單,咱也是能寫一點(diǎn)CMake的新時(shí)代少年,改!


我們的庫(kù)被PlatformIO下載到了./.pio/libdeps/開(kāi)發(fā)平臺(tái)名/中,我們可以找到這些庫(kù)存放頭文件的地方(一般直接就是第三方庫(kù)目錄,或者是其下的src目錄)

打開(kāi)CMakeLists.txt,然后使用include_directories語(yǔ)句,將這些存放頭文件的地方包含進(jìn)去.

(我們看到下面其實(shí)還有個(gè)關(guān)于CMakeListsUser.txt的邏輯,PlatformIO肯定是想我們把自己的CMake代碼寫到自己建的CMakeListsUser.txt中,但是不在CMakeLists.txt中沒(méi)有代碼提示啊,咱們就直接在這寫吧)

改完之后,重新右鍵,Reload CMake Project,或者點(diǎn)右上角的Reload Changes提示,重新載入一下CMake工程就好了.


可以看到,一切就完美了.



那就試試吧! 把硬件準(zhǔn)備好:

下載運(yùn)行,打開(kāi)串口監(jiān)視器查看:

完美!

總結(jié)

以上就是關(guān)于CLion+PlatformIO的安裝和使用了,我說(shuō)的比較詳細(xì)(啰嗦)

其實(shí)很簡(jiǎn)單的,

一兩行代碼安裝Platform IO,CLion裝一下Platform插件,整個(gè)安裝就結(jié)束了.

使用的時(shí)候,記得main.c改main.cpp,

看串口用platformio device monitor?,改端口號(hào)在platform.ini中寫monitor_speed = 115200

安裝第三方插件很舒服,在platform.ini中的lib_deps下添一句就行

有兩個(gè)小問(wèn)題,

一是第三方庫(kù)可能找不到某些Arduino自帶的頭文件,在自己工程的某個(gè)文件(比如main.cpp)中include一下就行

二是找不到第三方庫(kù)的頭文件,在CMakeLists.txt中配置一下頭文件路徑就行

啊,終于寫完了,如果您感覺(jué)本文不錯(cuò),對(duì)您有些許的幫助,跪求您投個(gè)幣,點(diǎn)個(gè)贊,然后讓文章滾到收藏夾吃灰吧Orz.






用clion自帶的platformIO和開(kāi)發(fā)esp32!!!的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
绵阳市| 开封市| 苏州市| 红原县| 石棉县| 若尔盖县| 瓮安县| 稻城县| 镇平县| 木兰县| 昭平县| 泌阳县| 稷山县| 长兴县| 湘阴县| 壶关县| 饶河县| 泰宁县| 衡阳县| 乌恰县| 通河县| 通道| 门头沟区| 巨鹿县| 平谷区| 平利县| 侯马市| 石家庄市| 宽甸| 修文县| 焉耆| 同心县| 新干县| 新巴尔虎右旗| 辽源市| 银川市| 浠水县| 红安县| 开封市| 项城市| 无为县|