翻譯|使用教程|編輯:鮑佳佳|2020-09-03 10:19:37.027|閱讀 2780 次
概述:如今,許多開發(fā)人員正在使用基于Arduino的項(xiàng)目。Arduino很容易上手,但是大多數(shù)這些Arduino開發(fā)人員都能在此方面更進(jìn)一步。他們將其他們簡(jiǎn)單地視為小愛好和附帶項(xiàng)目。在本系列文章中,我們想探討如何將項(xiàng)目帶入更專業(yè)的水平,以及像CLion這樣的IDE如何幫助您做到這一點(diǎn)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
CLion是一款專為開發(fā)C及C++所設(shè)計(jì)的跨平臺(tái)IDE。它是以IntelliJ為基礎(chǔ)設(shè)計(jì)的,包含了許多智能功能來(lái)提高開發(fā)人員的生產(chǎn)力。這種強(qiáng)大的IDE幫助開發(fā)人員在Linux、OS X和Windows上來(lái)開發(fā)C/C++,同時(shí)它還使用智能編輯器來(lái)提高代碼質(zhì)量、自動(dòng)代碼重構(gòu)并且深度整合CMake編譯系統(tǒng),從而提高開發(fā)人員的工作效率。感興趣的朋友歡迎下載試用!CLion現(xiàn)已加入在線訂購(gòu),點(diǎn)擊此處查看價(jià)格詳情>>
如今,許多開發(fā)人員正在使用基于Arduino的項(xiàng)目。Arduino很容易上手,但是大多數(shù)這些Arduino開發(fā)人員都能在此方面更進(jìn)一步。他們將其他們簡(jiǎn)單地視為小愛好和附帶項(xiàng)目。在本系列文章中,我們想探討如何將項(xiàng)目帶入更專業(yè)的水平,以及像CLion這樣的IDE如何幫助您做到這一點(diǎn)。
我們需要建立些什么?我們?yōu)轫?xiàng)目設(shè)定了一個(gè)宏偉的目標(biāo)。我們將建立一個(gè)電子氣壓計(jì),該氣壓計(jì)可以測(cè)量大氣壓力并將其繪制在圖表上,以預(yù)測(cè)接下來(lái)幾個(gè)小時(shí)的天氣狀況。這比經(jīng)典的晴雨表更有用,因?yàn)橐櫟膲毫ψ兓冉^對(duì)值更重要。該設(shè)備應(yīng)使用電池供電,一次充電即可工作數(shù)周。
我們將從構(gòu)建經(jīng)典項(xiàng)目(DIY晴雨表)開始:
聽起來(lái)很有趣嗎?讓我們開始吧!
從原型開始
電子裝置
我們首先在數(shù)位板支架上鉆幾個(gè)孔,然后將所有零件安裝在其上。固定Arduino板的螺栓之一也固定了傳感器模塊。
電子紙屏幕模塊利用一個(gè)單向SPI接口(CS,MOSI,SCK),兩個(gè)輸入控制信號(hào)(RESET,DC)和一個(gè)BUSY輸出信號(hào)。該模塊與8線電纜一起發(fā)貨,借助2.54mm邊緣引腳接頭連接至Arduino。為了最大程度地減少我們需要使用的接頭連接器的數(shù)量,我們將顯示電源線連接到Atmega8在線串行編程(ICSP)接頭連接器的電源引腳。壓力傳感器使用I2C接口(SCA,SCL),并與標(biāo)準(zhǔn)FM跳線連接。
下表描述了所有連接:
現(xiàn)在是時(shí)候編寫一些Arduino原型代碼了。
使壓力傳感器在線
在官方的Arduino指南詳細(xì)解釋了Arduino的草圖發(fā)展。因此,我們將簡(jiǎn)要地進(jìn)行設(shè)置:
對(duì)于該項(xiàng)目,我使用了屏幕供應(yīng)商WaveShare在GitHub上共享的代碼,并添加了更多代碼來(lái)啟動(dòng)和運(yùn)行屏幕。您可以在此處簽出最終的項(xiàng)目代碼。現(xiàn)在開始運(yùn)行!
Arduino草圖
“ Sketch ”是Arduino用于程序的名稱。這是上載到Arduino板上并在Arduino板上運(yùn)行的代碼單元。Arduino草圖使用的語(yǔ)言是C和C ++。更準(zhǔn)確地說(shuō),可以編寫一組C / C ++函數(shù),然后對(duì)其進(jìn)行一些預(yù)處理,例如在添加一個(gè)或多個(gè)Arduino專用#include子句時(shí)。最后將結(jié)果直接傳遞給C / C ++編譯器(avr-g ++)。您可以在官方文檔中閱讀有關(guān)Arduino構(gòu)建過(guò)程的信息。
由于最終僅使用C ++,因此可以使用任何通用的C ++ IDE編寫代碼。使用Arduino以外的IDE確實(shí)需要一些手動(dòng)步驟,您可以從官方的構(gòu)建過(guò)程描述中提取這些步驟。但是,讓我們看看您是否可以獲得任何回報(bào)!
CLion如何提供幫助如果您對(duì)嵌入式開發(fā)感興趣,并且正在尋找一個(gè)可以嘗試的項(xiàng)目,那么Arduino是一個(gè)不錯(cuò)的起點(diǎn)。它擁有一個(gè)龐大而熱情的社區(qū),豐富的基礎(chǔ)架構(gòu)以及數(shù)十種各種代碼示例和庫(kù)。非常適合希望在嵌入式世界中邁出第一步的人,或者想要實(shí)現(xiàn)一些簡(jiǎn)單想法的人。隨著項(xiàng)目的發(fā)展,它開始需要更多的工作,更復(fù)雜的代碼,更高的嵌入式處理器性能,更多的MCU內(nèi)存以及更多的外圍設(shè)備。在這一點(diǎn)上,IDE等開發(fā)工具對(duì)于保持我們的代碼質(zhì)量并幫助我們更高效地進(jìn)行開發(fā)非常有用。讓我們看一下CLion如何提供幫助。
范圍更廣的智能代碼編輯器如果您不熟悉它,CLion是適用于C和C ++的通用跨平臺(tái)IDE。它理解C和C ++中的代碼,并使用此知識(shí)來(lái)提供編輯器內(nèi)的操作。導(dǎo)航動(dòng)作可以搜索上下文使用情況,或者一次按鍵即可跳轉(zhuǎn)到類,文件或符號(hào),一個(gè)智能的快速文檔彈出窗口以及參數(shù)名稱提示可以幫助開發(fā)人員更好地閱讀和理解代碼。自動(dòng)補(bǔ)全,實(shí)時(shí)模板,重構(gòu)(例如提取函數(shù),參數(shù)或變量,內(nèi)聯(lián),當(dāng)然還有重命名和更改簽名)都可以幫助您更快地編寫代碼。當(dāng)涉及到代碼質(zhì)量時(shí),內(nèi)置的靜態(tài)分析工具和動(dòng)態(tài)分析是必不可少的幫助工具。嵌入式開發(fā)世界中的錯(cuò)誤代價(jià)可能比其他地方要高得多,因?yàn)楫?dāng)軟件在硬件上運(yùn)行時(shí),錯(cuò)誤通常會(huì)在運(yùn)行時(shí)顯示出來(lái)。在您鍵入代碼時(shí)立即捕獲錯(cuò)誤,然后,顯然可以減少您可能遇到的麻煩。
CLion提供的另一個(gè)絕佳機(jī)會(huì)是調(diào)試代碼的能力。它使您可以逐行跟蹤代碼執(zhí)行,檢查變量的值,觀察外設(shè)寄存器的內(nèi)容等。所有這些都可以在仿真器中完成,也可以在真實(shí)的MCU上完成,這取決于是否存在合適的仿真器以及MCU的調(diào)試功能是什么。
在接下來(lái)的專用教程中我們將學(xué)習(xí)如何在Windows上配置CLion,包括用于編譯和調(diào)試的必要工具鏈。在我們的Arduino案例中,您將需要安裝MinGW。
與世界分享您的項(xiàng)目隨著愛好項(xiàng)目的發(fā)展,它通常最終會(huì)在GitHub,GitLab,Bitbucket或其他地方共享,這使更多的參與者可以加入。在VCS上發(fā)布,處理請(qǐng)求請(qǐng)求,將工作分散到多個(gè)分支中–所有這些都是必不可少的任務(wù)可以直接在CLion中完成。至于編輯代碼,未提交的更改在編輯器中突出顯示,并且作者的注釋可用。所有這些功能都減少了切換上下文的需要,從而節(jié)省了您制定新想法的時(shí)間。
在發(fā)布到VCS時(shí),不要忘記添加一個(gè)Readme.md文件,該文件可以讓其他人知道項(xiàng)目的內(nèi)容,并提供有關(guān)如何使用該項(xiàng)目的詳細(xì)信息(需要進(jìn)行哪些設(shè)置,使用哪種工具鏈,等等。)。CLion附帶了Markdown支持,因此您可以輕松獲得Readme.md文件的預(yù)覽:
遷移到PlatformIO
PlatformIO.org是一個(gè)用于嵌入式開發(fā)的豐富生態(tài)系統(tǒng),它支持各種目標(biāo)硬件類型,編譯器和框架,包括Arduino項(xiàng)目。
讓我們看看如何在CLion中開始使用PlatformIO:
現(xiàn)在我們準(zhǔn)備創(chuàng)建一個(gè)新的PlatformIO項(xiàng)目,在本例中,我們將選擇Arduino Uno。單擊文件->新建項(xiàng)目,然后選擇Arduino Uno作為目標(biāo)以及項(xiàng)目位置。由于列表上有很多板子,因此您可以僅輸入“ Uno”,然后使用箭頭鍵瀏覽板子列表。為避免以后出現(xiàn)故障,我們建議您不要在該位置使用國(guó)際字符,特殊符號(hào)或空格。
下一步是啟用我們的傳感器庫(kù)。在CLion編輯器中打開platformio.ini,并將“ lib_deps = Adafruit BMP085 Library” 行添加到該[env:uno]部分,然后調(diào)用“工具” |“工具”。PlatformIO | 重新初始化。
現(xiàn)在是時(shí)候向我們的項(xiàng)目中添加一些代碼了。將所有頭文件從Arduino草圖文件夾復(fù)制到項(xiàng)目的include文件夾,并將所有源文件和.ino文件從Arduino草圖文件夾復(fù)制到項(xiàng)目的src文件夾。您可以刪除空的main.c文件-我們不需要。
由于我們不依賴Arduino IDE進(jìn)行與Arduino相關(guān)的預(yù)處理程序轉(zhuǎn)換,因此我們需要手動(dòng)執(zhí)行一些其他步驟:
您現(xiàn)在可以構(gòu)建項(xiàng)目!讓我們開始吧。
將電子設(shè)備連接到計(jì)算機(jī),然后啟動(dòng)Platformio Upload運(yùn)行配置。現(xiàn)在,固件已刷新到MCU,并且我們的設(shè)備可以再次工作。那很簡(jiǎn)單!
讓我們退后一步,看看到目前為止我們已經(jīng)實(shí)現(xiàn)了什么:
PlatformIO確實(shí)很有幫助,但是如果您想完全控制項(xiàng)目并自定義構(gòu)建步驟,該怎么辦?現(xiàn)在,我們將項(xiàng)目轉(zhuǎn)換為純CMake項(xiàng)目。這將涉及使用CLion IDE,CMake構(gòu)建系統(tǒng),用于AVR的GCC工具鏈和avrdude刷新實(shí)用程序。
我們將繼續(xù)使用Arduino庫(kù)。可以從Microchip網(wǎng)站下載AVR工具鏈,從Savannah下載avrdude實(shí)用程序。
在CLion中,以以下方式配置工具鏈和CMake配置文件:
該項(xiàng)目本身的代碼可以在GitHub上找到。手動(dòng)復(fù)制到項(xiàng)目源的Arduino庫(kù)與PlatformIO代碼相同。隨時(shí)克隆和使用它。但是,當(dāng)涉及到CMakeLists.txt文件中的這些用戶相關(guān)參數(shù)時(shí),您應(yīng)該小心:
一切設(shè)置正確后,您可以在CLion中觸發(fā)Build操作(而不是Run!),它將嘗試刷新Arduino:
讓我們看看這與我們之前使用PlatformIO的設(shè)置相比如何:
本系列將繼續(xù)。很快,我們將討論通過(guò)使用另一個(gè)開發(fā)板并嘗試?yán)闷渥罴压δ軄?lái)進(jìn)一步推進(jìn)該項(xiàng)目。敬請(qǐng)期待!并在評(píng)論中讓我們知道您希望我們重點(diǎn)介紹嵌入式開發(fā)的哪些方面,尤其是Arduino。
相信通過(guò)本文的講解你對(duì)如何使用CLion進(jìn)行Arduino開發(fā)也有了一定的了解,現(xiàn)在趕快下載使用吧!現(xiàn)雙節(jié)來(lái)臨之際慧都推出重磅限時(shí)優(yōu)惠! 最高立減2999!低至797元!想要購(gòu)買Clion正版授權(quán)的朋友歡迎。
JetBrain技術(shù)交流群現(xiàn)已開通,QQ搜索群號(hào)“786598704”或者掃描下方二維碼即可加入
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: