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