|
剛才我看到一個(gè)帖子,回答了一個(gè)單片機(jī)學(xué)習(xí)者的問題。但是我個(gè)人覺得這個(gè)問題比較有普遍性,想謝謝自己的經(jīng)歷,給那些愛好單片機(jī),以及正在學(xué)習(xí)單片機(jī)的朋友們。 我大一的時(shí)候,就加入了學(xué)校電子實(shí)驗(yàn)室,學(xué)習(xí)51單片機(jī),那個(gè)時(shí)候沒日沒夜的學(xué)單片機(jī)編程。從最簡(jiǎn)單的LED到后來(lái)的各種協(xié)議,用51單片機(jī)運(yùn)用自如。后來(lái)上了大二,我記得那個(gè)時(shí)候正逢湖北省電子設(shè)計(jì)大賽,我有幸被選拔為參賽成員,由于大賽的規(guī)定,我不得不轉(zhuǎn)入msp430單片機(jī)的學(xué)習(xí)。由于有熟練的51單片機(jī)的基礎(chǔ),所以在學(xué)習(xí)430的時(shí)候,上手很快。熟悉了430的寄存器,基本上就能夠上手變成了,就這樣,我學(xué)習(xí)了半年的MSP430單片機(jī)。 在學(xué)習(xí)單片機(jī)的同時(shí),自已學(xué)習(xí)電路以及PCB的設(shè)計(jì),從基本的模塊到整個(gè)大的系統(tǒng),自己都嘗試做PCB。可以說PCB是我一直堅(jiān)持學(xué)習(xí)的。從大一到大四,以至于現(xiàn)在我仍然設(shè)計(jì)一些PCB,但是相比于學(xué)校的,公司里面的更為復(fù)雜,要求更為苛刻。因?yàn)樯婕暗礁哳lPCB布線,我就不詳述了。總之,學(xué)習(xí)單片機(jī)的同時(shí),硬件也在步步跟進(jìn)。自己做開發(fā)板,自己做一些小玩意。 后來(lái),玩430覺得不過癮,又買了PIC和AVR的開發(fā)板學(xué)習(xí),可是學(xué)來(lái)學(xué)去,總是那么幾個(gè)模塊,那么幾個(gè)協(xié)議。后來(lái)我自己嘗試著做了一套AVR的開發(fā)板,花了一個(gè)暑假的時(shí)間,調(diào)通了所有的配套模塊。當(dāng)時(shí)是在大二下學(xué)期的時(shí)候,當(dāng)時(shí)還準(zhǔn)備把開發(fā)板發(fā)到淘寶去賣,后來(lái)發(fā)現(xiàn),淘寶各種類型的開發(fā)板太多了,生活費(fèi)都賺不來(lái),所以,我把我那些開發(fā)板都分給了我的學(xué)弟們。后來(lái)想學(xué)習(xí)高速PCB設(shè)計(jì),那時(shí)候有幸認(rèn)識(shí)了黃文聰博士,是帶我進(jìn)入高頻PCB設(shè)計(jì)的老師,不是他,或許我還永遠(yuǎn)停留在altiumDesigner的層面,在黃老師的指導(dǎo)下,我學(xué)習(xí)了cadence以及allegro PCB布線,學(xué)習(xí)了各種布線要求,以及DDR布線技巧,等長(zhǎng)約束等各類約束技巧。以至于后來(lái)我大學(xué)找工作跟面試官談起allegro 高速布線,面試官都有些詫異。 后來(lái)有幸認(rèn)識(shí)了學(xué)校的一個(gè)教授,那個(gè)時(shí)候正是STM32正火熱的時(shí)候,我第一次接觸STM32,感覺很興奮,當(dāng)時(shí)學(xué)的STM32F103能夠倍頻到72M,當(dāng)時(shí)學(xué)習(xí)用STM32驅(qū)動(dòng)攝像頭等各種模塊,因?yàn)楫?dāng)時(shí)有一個(gè)小項(xiàng)目是做視頻采集的。所以用51或者430基本上力不從心,速度太慢,刷屏超級(jí)慢。所以,我投入了很多精力去學(xué)習(xí)STM32。從基本的GPIO到各種協(xié)議的驅(qū)動(dòng)。都一遍遍的看代碼,寫代碼。那個(gè)時(shí)候有點(diǎn)傻,第一次學(xué)習(xí)STM32的時(shí)候,竟然是用寄存器編程的。那次寫一個(gè)ADC的程序,光寄存器就是有好幾十個(gè)。現(xiàn)在想想,悔不當(dāng)初,用庫(kù)開發(fā)又快。但是轉(zhuǎn)念想想,學(xué)了寄存器也挺實(shí)用的。至少現(xiàn)在用庫(kù)開發(fā)的時(shí)候,知道寄存器里面是怎么配置的。從大三上學(xué)期學(xué)習(xí)STM32一直到現(xiàn)在,敲過的代碼不算少了。但是我總覺得還差點(diǎn)什么。 是的,還差點(diǎn)什么?我在大三的暑假的時(shí)候,在與帶我的教授聊天中,我知道差點(diǎn)什么了。那就是算法,單片機(jī)的核心不是說你能如何熟練的玩轉(zhuǎn)單片機(jī)。如何的熟悉每一個(gè)寄存器,每一個(gè)寄存器的地址。這些都不是的。我后來(lái)總結(jié)了一下,無(wú)論是51,,40,avr,pic,stm32。我們學(xué)習(xí)的時(shí)候,一開始就是點(diǎn)亮發(fā)光二極管。后來(lái)就是學(xué)習(xí)I2C,SPI等各種外設(shè)。但是驅(qū)動(dòng)這些外設(shè)真的不難,有參考代碼,有官方的數(shù)據(jù)手冊(cè),這一切都不是問題。特別是我現(xiàn)在工作之后,特別能體會(huì)到這點(diǎn),單片機(jī)種類不限于多,在于算法的精。在公司,用什么型號(hào)的單片機(jī),完全老大說了算,今天選飛思卡爾,明天用LPC的,后天又用英飛凌的單片機(jī)。等等,大學(xué)時(shí)間有限,你如何能學(xué)完所有單片機(jī)。單片機(jī)種類和型號(hào)那么多,你如何能記住全部的寄存器? 再談?wù)務(wù)夜ぷ靼伞?nbsp; 當(dāng)時(shí)我滿以為我精通4大單片機(jī),4-6層PCBLayout,找工作應(yīng)該很順利吧?可是,卻也有不盡如人意的時(shí)候。我面試的第一家公司是CVTE,廣州視源。那待遇是沒的說,我當(dāng)時(shí)帶著自己厚厚的一本項(xiàng)目集,第一輪面試的時(shí)候,我把項(xiàng)目集交給了面試的HR,面試竟然很順利的通過了。大家都知道CVTE的要求之高,后來(lái)我如約收到了CVTE的專業(yè)筆試短信,我后來(lái)專心準(zhǔn)備了一番,功夫不負(fù)有心人,筆試竟然過了,筆試考試的全部是模擬電子方面的內(nèi)容,后來(lái)我在專業(yè)面試環(huán)節(jié)掛了。面試我的應(yīng)該是一名技術(shù)大牛,跟我談了很多的技術(shù)問題,我當(dāng)時(shí)還自我感覺良好。最后一句話讓我記憶深刻:我覺得你專業(yè)技術(shù)運(yùn)用的不夠靈活,就這樣,我被淘汰了。 之后,我又應(yīng)聘了臺(tái)達(dá),應(yīng)聘的方向是做電源。筆試面試都過了,后來(lái)連三方協(xié)議都簽了,最后我還是違約了。我拒絕了臺(tái)達(dá),因?yàn)楹髞?lái)我發(fā)現(xiàn),不是提供的研發(fā)崗位,只是跟我說以后能轉(zhuǎn)研發(fā)崗位。我覺得不靠譜,就拒絕了。 后來(lái)又陸陸續(xù)續(xù)面試過幾家公司,有人家不同意我的,也有我不滿意企業(yè)的。就這樣來(lái)來(lái)回回折騰了一個(gè)月。由于找工作非常疲憊,當(dāng)時(shí)打算,有研發(fā)崗就去。就這樣,當(dāng)時(shí)廣州數(shù)控來(lái)武漢理工開宣講會(huì),我去投了簡(jiǎn)歷,簡(jiǎn)歷上明確寫了崗位意向是研發(fā)崗位。后來(lái)如愿與廣州數(shù)控簽約了。 工作中,經(jīng)常要設(shè)計(jì)PCB以及各類模塊的調(diào)試,有的時(shí)候一些底層的代碼也要自己寫。但是單片機(jī)型號(hào)就不固定了。各種型號(hào)的都有。現(xiàn)在想起來(lái),以前在學(xué)校的時(shí)候,把太多時(shí)間浪費(fèi)在各種類型單片機(jī)的學(xué)習(xí)中去了。但是另一方面,各種類型的單片機(jī)的學(xué)習(xí),增加了你在找工作中的籌碼。 工作了這么久,想寫點(diǎn)心得給未畢業(yè)的學(xué)弟們,也是我以前認(rèn)識(shí)的一些誤區(qū),分享一下。 1、MCU學(xué)的種類不在于多,在于精,再設(shè)計(jì)過程中,什么樣型號(hào)的單片機(jī)都可能被用到,在我看來(lái),只要是不涉及加載系統(tǒng)的,單片機(jī)都一回事,從基本的51到ARMv7,沒有本質(zhì)區(qū)別。無(wú)非是資源的多少,處理速度的問題,以及開發(fā)調(diào)試便利性的問題。 2、要非常熟練基本的通信協(xié)議,了解本質(zhì)和原理,I2C、UART、SPI、CAN、485等等這些最最基本的協(xié)議。不要糾結(jié)于是調(diào)試飛思卡爾某型號(hào)的SPI,還是STM32的SPI,亦或是MSP430的SPI等等。 3、扎實(shí)的C語(yǔ)言基礎(chǔ),多把時(shí)間花在對(duì)C語(yǔ)言深層次的理解上,說實(shí)在的,用51單片機(jī)點(diǎn)一個(gè)LED,和你用ARM點(diǎn)一個(gè)LED,沒有區(qū)別。切莫成為“一燈大師”。掌握單片機(jī)語(yǔ)法和算法,是最重要的。我記得以前在大學(xué),單片機(jī)種類自學(xué)了很多,基本的51單片機(jī)、AVR,MSP430,PIC16F,STM32,現(xiàn)在想想,學(xué)的有點(diǎn)過了。單片機(jī)種類真的不是問題,重要的是算法。 4,模擬電子和數(shù)字電子,這個(gè)是最最基本的必須要掌握的。不要局限于課本,課本的知識(shí)只能應(yīng)付考試,在工程設(shè)計(jì)中,課本上的內(nèi)容完全不夠用,建議買一些小日本或者美國(guó)佬編寫的模擬電子的書。 5,說到設(shè)計(jì)PCB的軟件,入門用AD,想升級(jí)的使用PADS或者Cadence。如果還有用protel的,趁早轉(zhuǎn)AD或者PADS。AD適合2-4層低速電路板設(shè)計(jì),PADS在手機(jī)主板設(shè)計(jì)領(lǐng)域比較多(以前華強(qiáng)北的手機(jī)主板基本都是PADS畫的),至于Cadence,中興華為聯(lián)想小米等公司現(xiàn)在主流設(shè)計(jì)軟件,就不多說了。 最后我想說的是,學(xué)好技術(shù),不會(huì)說工作不好找的。待遇不會(huì)差的。在大學(xué)里,不要太沉迷于單片機(jī)的設(shè)計(jì),如果有精力,轉(zhuǎn)嵌入式設(shè)計(jì),或者安卓開發(fā)。這個(gè)以后是很好的發(fā)展趨勢(shì),需求量也大,我找工作那會(huì),安卓開發(fā)人才急缺,如果你覺得搞安卓開發(fā)和嵌入式linux做不來(lái),那就老老實(shí)實(shí)學(xué)好單片機(jī)和模電數(shù)電等硬件軟件開發(fā) |
|