終于大學(xué)畢業(yè)了,聊聊這些年學(xué)嵌入式的體會吧。
前言
大家好,我是張巧龍。今天轉(zhuǎn)載的這篇文章來自一個本科生,在嵌入式學(xué)習(xí)上有自己獨到的心得體會。
-
嵌入式的前景
-
如何入門嵌入式。
-
怎么才算是掌握一個單片機
-
學(xué)習(xí)單片機的最快途徑
嵌入式前景 用一種說法,下一個時代是物聯(lián)網(wǎng)的時代,以后的生活一定是智能的、萬物互聯(lián)的,所有的家電都會集中到一個終端上,通過這個終端就可以控制周圍的一切,就像扎克伯格為自己家的設(shè)備寫的一套系統(tǒng)一樣,通過一個語音助手就控制整個家。 這些智能設(shè)備都需要我們嵌入式開發(fā)者來做,把那些設(shè)備嵌入進程序,讓它們?nèi)文憧刂啤?/span> 最近華為、中興的芯片事件刺痛了每一個國人的心。華為因為被美國制裁,麒麟芯片將成為絕版,因為以國內(nèi)的技術(shù)、設(shè)備、工藝水平無法生產(chǎn)7納米芯片。在芯片領(lǐng)域,國家投入幾千億來做,這方面人才非常稀缺。
傳聞阿里收購了唯一自主嵌入式 CPU IP Core 公司中天微,就是想做芯片,解決我們的無 “ 芯 ” 之痛。我們學(xué)習(xí)嵌入式正好可以用的上。 嵌入式以后的工作是可以動手做自己想做的東西,而且是很智能的設(shè)備,開發(fā)出來一款設(shè)備豈不是很爽,比如門禁,熱敏打印機,電子手表,掃地機器人等等。
嵌入式學(xué)習(xí)的有軟件知識還有硬件知識,當看到學(xué)習(xí)的是可以實際操作的單片機后就感覺不錯了。 前景也好,前面說過了,不用擔心找不到工作。 最后真正喜歡嵌入式的話,那么就好好學(xué)習(xí)吧,后期的學(xué)習(xí)嵌入式還是有點難度的,這個時候就要發(fā)揮興趣的作用了,既然喜歡,知道他好,那再難也要去學(xué),這樣一定能學(xué)好的,比的不是誰比誰聰明,比的完全是誰學(xué)的時間久,學(xué)的知識多。
03
如何入門嵌入式 大學(xué)期間想要學(xué)好嵌入式,那么從大一開始吧。嵌入式不容易學(xué)習(xí),嵌入式牽扯的東西太多了,不會像軟件那么容易學(xué)。
你可能見過滿大街JAVA、Python、大數(shù)據(jù)、數(shù)據(jù)庫的培訓(xùn) ,但很少聽到有培訓(xùn)嵌入式培訓(xùn)吧?
就是因為入門難,既要掌握軟件的知識,還要學(xué)習(xí)硬件的知識,還要學(xué)習(xí)各種硬件之間通訊原理。也就是說,嵌入式學(xué)習(xí)需要一定的的科班基礎(chǔ)。 大一剛來的話肯定要多參加學(xué)校的活動,多交些朋友的,期間要留意下實驗室什么時候納新,最好從實驗室納新的時候就進去,當然大一主要學(xué)習(xí)C 語言。 大二要開始學(xué)習(xí)單片機了,這個要有老師,學(xué)長帶帶,有實驗室的環(huán)境,還能一起做項目,學(xué)的會快很多,想著在宿舍學(xué)習(xí)的盡早放棄,感覺幾乎不可能學(xué)好。 如果大一上學(xué)期就加入了實驗室,那么上學(xué)期就應(yīng)該把 C 語言學(xué)習(xí)完的,C 語言在實驗室學(xué)習(xí)的進度一定要比課堂上的快的,不會的就問別人或者上網(wǎng)搜索。這樣下學(xué)期就開始學(xué)習(xí)單片機,剛開始學(xué)習(xí)的時候一套資料是一定要有的,不然很吃力。
04
怎么才算是掌握了單片機?
所謂掌握,就是做到心中有數(shù),那什么樣算心中有數(shù)?這就很關(guān)鍵了,掌握單片機的核心構(gòu)架、擁有自己的編程思想。 我當時學(xué)到了大二下學(xué)期,把單片機的各個模塊都學(xué)習(xí)過了,但是不太會用,不能把每個模塊結(jié)合起來做一個項目。 后來有幸參加藍橋杯,當時的題目是做一個可以改時間的萬年歷,我們需要把溫濕度模塊,時鐘模塊,按鍵模塊,液晶模塊都添加到程序中,并且讓他們能夠運轉(zhuǎn)正常,最后在主函數(shù)里面調(diào)用各個模塊的功能,做成了一個項目,不一定非要把每一個知識點都吃透,但是你要準確無誤的用起來,那么這時候你就算是學(xué)會了。
大一應(yīng)該學(xué)習(xí)最重要的 C 語言,51 單片機,大二學(xué) 51 單片機也可以,高數(shù)也應(yīng)該好好學(xué)下,考研或者以后的工作中會有用的。
大二期間一定要把 51 單片機學(xué)完,做幾個小項目,再學(xué)習(xí)些自己感興趣的模塊,比如紅外感應(yīng)模塊,WIFI 模塊,藍牙模塊,指紋檢測模塊......
很多很多模塊的,你可以實現(xiàn)你自己的想法了。
譬如做個跑馬燈、動態(tài)數(shù)碼管顯示、模擬個 “ 世上只有媽媽好的鈴聲 ”、又或者弄個難點的時鐘計時又或者紅外控制,想做什么,都可以問問老師有沒有相關(guān)的模塊。
大二期間還應(yīng)該學(xué)習(xí)畫原理圖的軟件 protel99se 或者 AD(Altium Designer),C ,數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)庫,這些都是課堂上的課程,在課堂上好好學(xué)習(xí)就行。英語在以后的工作中也挺重要的,要看英文的文檔,四六級要好好準備。
在大二下學(xué)期也可以開始學(xué) stm32 單片機了,我是大二暑假留在學(xué)校的實驗室學(xué)習(xí) STM32 的,就是每天看視頻學(xué)些基礎(chǔ)的知識。
大三學(xué)習(xí)一種做上位機的語言 VC 或者 C#,同時 STM32 要學(xué)的精通了,可以先在 STM32 上學(xué)習(xí) UCOS 實時操作系統(tǒng),大三的時候要多參加大的項目,多參加比賽,我們實驗室就會常參加電賽,還有挑戰(zhàn)杯,藍橋杯,拿著自己做的東西去參加。
大三如果還有時間的話,就開始做畢業(yè)設(shè)計,一般兩個月應(yīng)該就能做好了,我們是選擇暑假留在學(xué)校做畢業(yè)設(shè)計,實驗室的老師給的題目。
做完了就用 ARM 學(xué)習(xí) LINUX,當然 LINUX 在學(xué)校階段熟悉就行。如果這些知識都掌握了,那學(xué)的一定不錯了,以后就去實習(xí)吧,盡早去社會磨練磨練。
看了看怎么這么多東西要學(xué),選一個方向?qū)W不就行了嗎? 其實大學(xué)所學(xué)的知識都是基本的知識,所學(xué)的知識都是為你以后學(xué)習(xí)更加深的知識打基礎(chǔ)的,當你選擇一個新的方向,在大學(xué)里面如果還接觸過,那么學(xué)習(xí)起來就沒那么難了,如果壓根沒見過,那么學(xué)習(xí)起來一定會花費大量的時間,工作的時候可不會給你這么多時間學(xué),所以多學(xué)點肯定是有用的。05
玩單片機最快的方法就是做項目。
當把一個知識,單片機的基礎(chǔ)知識看完之后,一定要做項目,做項目才能讓你學(xué)的更快。簡單談一下我從做項目中獲取的經(jīng)驗吧。
大一期間就對無線控制很感興趣,覺得無線控制很有意思,響應(yīng)設(shè)備與控制設(shè)備之間的數(shù)據(jù)交互看不見摸不著,但卻能精準高速的相互通信。經(jīng)過一段時間的學(xué)習(xí),我選擇紅外線這一無線通信工具。 完成的項目是 “ 基于物聯(lián)網(wǎng)教室空調(diào)控制系統(tǒng) ”,主要實現(xiàn)的功能,學(xué)習(xí)、發(fā)射紅外碼,加入 WIFI 通信功能、定時功能、溫濕度檢測等。
首先接到這個項目,先了解基本功能,設(shè)計一下方案,思考方案可不可行,各個模塊如何相互配合工作?具體需要什么模塊等等吧,然后選擇適合的 MCU,不需要多大夠用就行,然后選擇要使用的模塊硬件。 準備工作做好之后,就可以從 PCB 構(gòu)圖做起了。當然如果沒有條件,可以選擇一個帶有你需要模塊的現(xiàn)有單片機。硬件準備好之后,就可以嵌入式最擅長的軟件編程了。
編程過程中要多注意細節(jié),以及個人編程習(xí)慣都會導(dǎo)致一些很難排查的 bug,過程當中無可避免的會出現(xiàn)各種各樣的 bug。 養(yǎng)成好的編程習(xí)慣,比如對代碼加注釋。
-END-