網(wǎng)上流傳著一段程序員的視鏈:寫(xiě)組合語(yǔ)言的工程師鄙視寫(xiě) C 語(yǔ)言的工程師,C 語(yǔ)言工程師鄙視 C++ 工程師,C++ 工程師鄙視 Java 和 C# 工程師,Java 工程師和 C# 工程師則互相鄙視。
前段時(shí)間,看到一個(gè)小有名氣的電子論壇創(chuàng)始人說(shuō)玩Arduino要被笑話的。
我聽(tīng)后反而覺(jué)得,說(shuō)這種話的人是不是應(yīng)該首先被人笑話才是。
Arduino和單片機(jī)區(qū)別
什么是單片機(jī)?
一臺(tái)能夠工作的計(jì)算機(jī)包含以下幾個(gè)部份:中央處理單元CPU(進(jìn)行運(yùn)算、控制)、隨機(jī)存儲(chǔ)器RAM(數(shù)據(jù)存儲(chǔ))、存儲(chǔ)器ROM(程序存儲(chǔ))、輸入/輸出設(shè)備I/O(串行口、并行輸出口等)。
在個(gè)人計(jì)算機(jī)(PC)上這些部份被分成若干塊芯片,安裝在一個(gè)被稱之為主板的印刷線路板上。而在單片機(jī)中,這些部份全部被做到一塊集成電路芯片中了,所以就稱為單片(單芯片)機(jī),而且有一些單片機(jī)中除了上述部份外,還集成了其它部份如模擬量/數(shù)字量轉(zhuǎn)換(A/D)和數(shù)字量/模擬量轉(zhuǎn)換(D/A)等。
單片機(jī)有什么用?
所謂殺雞焉用牛刀,并不是任何場(chǎng)合都需要很高的性能。想象一個(gè)使用Intel i7處理器的聲控?zé)?,其性價(jià)比一定低到突破天際了。應(yīng)用的關(guān)鍵是看是否夠用,是否有很好的性能價(jià)格比,于是單片機(jī)很好地填補(bǔ)了這個(gè)縫隙。
回過(guò)頭來(lái),那什么是Arduino?
Arduino 是一款便捷靈活、方便上手的開(kāi)源電子原型平臺(tái),包含硬件(各種型號(hào)的Arduino板)和軟件(Arduino IDE)。它適用于藝術(shù)家、設(shè)計(jì)師、愛(ài)好者和任何“想搗騰”的朋友們。
特點(diǎn)就是形狀簡(jiǎn)單,能夠?qū)崿F(xiàn)與人互動(dòng),十歲的孩子也能用它做出一些自己想要的東西。Arduino能通過(guò)各種各樣的傳感器來(lái)感知環(huán)境,通過(guò)控制燈光、馬達(dá)和其他的裝置來(lái)反饋、影響環(huán)境。
板子上的微控制器可以通過(guò)Arduino的編程語(yǔ)言來(lái)編寫(xiě)程序,編譯成二進(jìn)制文件,收錄進(jìn)微控制器?;贏rduino的項(xiàng)目,可以只包含Arduino,還可以包含Arduino和其他一些在PC上運(yùn)行的軟件,他們之間進(jìn)行通信 (比如 Flash, Processing, MaxMSP)來(lái)實(shí)現(xiàn)。
方向不同
STM32和Arduino應(yīng)該是屬于兩個(gè)方向的東西。
STM32因?yàn)閲?guó)內(nèi)推廣的好,很多公司都用STM32來(lái)做產(chǎn)品。而Arduino只是一個(gè)實(shí)現(xiàn)創(chuàng)意的工具,設(shè)計(jì)的初衷就是為了“非專業(yè)人士”使用。
Arduino是把很多底層硬件驅(qū)動(dòng)做好了,用戶只需要一些邏輯判斷和數(shù)據(jù)處理就可以完成一個(gè)應(yīng)用,首要考慮的是快速驗(yàn)證原型。
STM32首要考慮的是產(chǎn)品的穩(wěn)定性,網(wǎng)上即使能找到一些別人寫(xiě)的驅(qū)動(dòng),拿來(lái)也需要好好的測(cè)試,不能有半點(diǎn)差錯(cuò)。特別是針對(duì)一些低功耗應(yīng)用,STM32官方配的寄存器庫(kù)也不能直接用,關(guān)鍵執(zhí)行部分,需要直接操作寄存器來(lái)縮短程序執(zhí)行時(shí)間,提高運(yùn)行效率。
電子專業(yè)該學(xué)哪個(gè)?
1.基礎(chǔ)任何表面簡(jiǎn)單的東西,背后一般都不簡(jiǎn)單。作為電子專業(yè)的學(xué)生,我建議剛開(kāi)始接觸時(shí),先搞一塊板子直接上手,把自己的興趣培養(yǎng)起來(lái),而不是直接被枯燥的數(shù)電模電打死。
當(dāng)你慢慢的玩熟了以后,你就會(huì)有好奇心想去了解背后的原理。如果你學(xué)Arduino,你可以嘗試去看看Arduino的庫(kù),一般官方推薦的庫(kù)寫(xiě)的都很有水平,比如驅(qū)動(dòng)顯示屏的庫(kù)、官方自帶的串口庫(kù)、wire庫(kù)等,內(nèi)部的對(duì)象繼承、類定義都用的爐火純青,串口庫(kù)里還集成了環(huán)形緩存隊(duì)列。
另外Github上還有大量的各種各樣的庫(kù)。你應(yīng)該慢慢學(xué)學(xué)會(huì)別人怎么寫(xiě)庫(kù)的,然后嘗試自己去針對(duì)某一個(gè)應(yīng)用,寫(xiě)一個(gè)庫(kù)放到Github上,分享給別人。
2.進(jìn)階當(dāng)你某一個(gè)瞬間突然覺(jué)得Arduino的性能或者體積不能滿足你的需求時(shí),可以去看看STM32。學(xué)單片機(jī),玩通一款以后,其他也能很快上手,基本都是相通的。STM32官方提供的庫(kù)也能讓你很快的上手,然后你再針對(duì)某一個(gè)項(xiàng)目,設(shè)計(jì)專門的PCB,去調(diào)試。
3.應(yīng)用當(dāng)你離開(kāi)學(xué)校,進(jìn)入企業(yè)以后,會(huì)發(fā)現(xiàn)那些只會(huì)跑跑STM32例程的人,會(huì)馬上跟不上。企業(yè)里做產(chǎn)品,針對(duì)嵌入式最關(guān)鍵的是追求穩(wěn)定,如果有個(gè)好導(dǎo)師帶你的話,能學(xué)到很多細(xì)節(jié)的處理。
比如,針對(duì)重要數(shù)據(jù)的存儲(chǔ),會(huì)多寫(xiě)幾個(gè)備份區(qū)和校驗(yàn)碼;每次讀取、或者存取操作都是單一接口;防止死機(jī),除了加軟件開(kāi)門狗外,還要加硬件開(kāi)門狗等等。最后就是跑現(xiàn)場(chǎng)面對(duì)各種原因造成的BUG,不斷的跟蹤,找復(fù)現(xiàn)現(xiàn)象。
未來(lái)趨勢(shì)
ARM自己也推出了mbed軟件平臺(tái),各家大公司也都推出了Arduino接口的開(kāi)發(fā)板。未來(lái)就是一個(gè)硬件被軟件化的時(shí)代,很多造好的車輪,我們直接拿來(lái)用就行,不用覺(jué)得啃寄存器的比用庫(kù)的牛。
寫(xiě)在最后,不管是Arduino或是stm32,本質(zhì)上都是開(kāi)發(fā)平臺(tái),花一定時(shí)間基本都可以掌握。關(guān)鍵是,如何實(shí)現(xiàn)完成你想要做的事和想要的功能,才是重要的。
免責(zé)聲明:本文素材來(lái)源網(wǎng)絡(luò),版權(quán)歸原作者所有。如涉及作品版權(quán)問(wèn)題,請(qǐng)與我聯(lián)系刪除。
編輯:jq
-
Arduino
+關(guān)注
關(guān)注
188文章
6479瀏覽量
188728
原文標(biāo)題:玩STM32的該歧視玩Arduino的嗎?
文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論