首頁 > 評測 > 拇指兄弟的比拼戰(zhàn)——Arduino AVR VS Arduino STM32

拇指兄弟的比拼戰(zhàn)——Arduino AVR VS Arduino STM32

Arduino   STM32   AVR   單片機   
  • 作者:高揚
  • 來源:21ic
  • [導(dǎo)讀]
  • Arduino一般是一個帶有AVR單片機的完整系統(tǒng)板(一般的,也有Arduino用arm處理器,比如用STM32)。Arduino更傾向于創(chuàng)意,它弱化了具體的硬件的操作,它的函數(shù)和語法都非常簡單,而且非!吧倒稀薄R虼,Arduino在創(chuàng)客的世界是一個非常方便輕松實現(xiàn)“想法”的神器。

我們看到程序中,對端口0和1配置的高低電平交替并延時,也就是如果接LED的話表現(xiàn)為閃爍。那么電路原理圖中給出的只有端口1(PB1)連接了LED,且高電平點亮。我們權(quán)且不動這個代碼。接下來編譯燒錄測試。

我們這個時候還是不應(yīng)該把開發(fā)板連接到PC的USB接口的,我們要先進(jìn)行編譯并上傳,如下圖所示。

圖片10.jpg

按下上傳選項或按鈕后,系統(tǒng)即對代碼進(jìn)行編譯,編譯后出現(xiàn)如下圖提示信息,要求連接設(shè)備的提示。

圖片11.jpg

根據(jù)提示連接開發(fā)板和電腦USB接口,在等待幾秒后,完成代碼上傳到MCU,即出現(xiàn)如下提示的成功消息。

圖片12.jpg

說明:根據(jù)這個例程,我們可以知道在該環(huán)境下,端口名字就是:0~5對應(yīng)P0~P5六個端口。如何重新給該端口起個名字呢?查找例程,可知通過int xxx =###的形式來重新定義端口的名字,如下圖所示。

圖片13.jpg

我們按照例子重寫剛才的程序測試,如下圖,證明這個思路是正確的。

圖片14.jpg

關(guān)于管腳復(fù)用的其他功能,我們這里不再贅述,請根據(jù)相關(guān)頭文件的配置來使用其他功能,并參考相關(guān)的Arduino軟件編寫相關(guān)教程,以及其他的示例程序。

Maple mini(STM32F103)軟件開發(fā)流程

Maple Mini是Leaflabs推出的Maple的微型版本,其大小相當(dāng)于一片口香糖。盡管尺寸很小,Maple Mini上還是有一個mini-B型USB接口,有LDO穩(wěn)壓器,可以非常方便的作為一個ARM處理器平臺。Maple Mini適用在對空間要求苛刻的場合,也可以插在面包板上做原型開發(fā)。

由于官方?jīng)]有提供移植開發(fā)環(huán)境至Arduino IDE官方最新版的json文件鏈,因此我們只能找到Leaflabs移植好的變種Arduino—maple-ide-0.0.12。這也是目前最新的一個版本。經(jīng)筆者測試兼容Win10,如果使用的是Win8.1或更新版本的Windows系統(tǒng),在安裝驅(qū)動前需要禁用驅(qū)動程序強制簽名。具體步驟請在搜索引擎搜索“禁用驅(qū)動程序強制簽名”。

下載好Maple IDE后,解壓縮,其中drivers文件夾就是所需要的驅(qū)動程序,連接PC和Maple Mini開發(fā)板,打開設(shè)備管理器。

圖片15.jpg

選擇Maple 003,單擊右鍵手動安裝驅(qū)動程序,如下圖,找到驅(qū)動文件夾。

圖片16.jpg

完成后,感嘆號消失,表明驅(qū)動安裝成功。

圖片17.jpg

接下來啟動Maple Mini,選擇開發(fā)板,建立示例程序。

單擊:Tools—Board—LeafLabs Maple Mini Rev2 to RAM(或Flash)。注意到這里有兩種選擇,一個是下載到RAM,一個是把目標(biāo)代碼下載到Flash。有什么區(qū)別呢?下載到RAM后運行速度快,斷電后呢,程序不保存,下載到Flash斷電后程序不消失,重新上電可以繼續(xù)運行。

圖片18.jpg

接下來選擇示例程序。

單擊File—Examples—Digital—Button。這里我們選擇個按鍵例程測試,見下圖,其他的例程也都是可以的。

圖片20.jpg

之后彈出例程窗口,我們可以看到界面是英文的。

圖片20.jpg

如上圖所示,其中向右的箭頭就是Upload(上傳)按鈕,我們現(xiàn)在可以連接Maple mini和PC。單擊Upload按鈕。

之后在下面綠色消息窗口顯示處理進(jìn)度與內(nèi)容。

圖片21.jpg

下面我們通過按下開發(fā)板的唯一用戶按鍵試試。

我們回過頭來再來看代碼中的內(nèi)容,采用了宏定義替代了Arduino慣用的數(shù)字編號,那么在哪兒找到這個宏定義的文件呢?答案就在\hardware\leaflabs\cores\maple\maple_mini.h頭文件。如下圖所示。

圖片22.jpg

如上圖所示,根據(jù)頭文件中的宏定義,可以看出來,按鍵是在32號管腳,LED是在33管腳,對照開發(fā)板上標(biāo)注的編號,剛好對應(yīng)。我們根據(jù)這個頭文件也知道了,如果使用其他編號的管腳,可以使用什么宏定義來替代管腳編碼。而對于其他的操作也可以在同一文件夾下的其他頭文件中找到,比如isButtonPressde()、toggleLED()等,這些均在io.h文件。

寫到這里,大家應(yīng)該發(fā)現(xiàn)了吧,不管Arduino怎么變化,總之都是在Arduino技術(shù)規(guī)范內(nèi)的,不管是AVR的八位機,還是ARM的32位機器,只要在這個標(biāo)準(zhǔn)內(nèi),都可以用簡單的Arduino標(biāo)準(zhǔn),來操作。

我們也可以清楚的看出,這兩個開發(fā)板雖然核心千差萬別,但是開發(fā)流程幾乎一模一樣,除了Maple mini需要使用變種版的Arduino來實現(xiàn)外,而對于寄存器和外設(shè)的處理方式都是符合Arduino標(biāo)準(zhǔn)的。我們唯一要做的就是了解開發(fā)板提供了哪些資源,這些資源在Arduino的框架里定義成了什么名字,另外就是根據(jù)開發(fā)板的原理圖,加入自己需要的部分。而對于想全面掌控MCU系統(tǒng)的每個細(xì)節(jié)的人,還是需要按照傳統(tǒng)的方法來做,不過Arduino的確縮減了嵌入式的學(xué)習(xí)所用的時間成本,以及更加方便的使用體驗,更適合要求不是非常非常高的用戶和應(yīng)用的使用。

另外本測評中所選用的開發(fā)板上,均是只有一片MCU,無需使用編程器進(jìn)行燒錄,因為他們都內(nèi)置了Bootloader程序,這也做到了真正的單片機的單片系統(tǒng)應(yīng)用。

附件:http://pan.baidu.com/s/1c2DdPyK

 

本文系21ic原創(chuàng),未經(jīng)許可嚴(yán)禁轉(zhuǎn)載

  • 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評論

  • 聯(lián)系人:巧克力娃娃
  • 郵箱:board@21ic.com
  • 我要投稿
  • 歡迎入駐,開放投稿

熱門標(biāo)簽
項目外包 more+