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