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