很多人覺得學習嵌入式開發(fā)比高考還難,不知道怎么入門?要學哪些東西?
嵌入式開發(fā)涉及的知識,你確實一輩子都學不完。
但是,這不代表你需要花費很長的時間才能學會。
我相信大多數(shù)人學習的目的,都是先通過學習這個技能找份工作,然后慢慢深入。
如果只是要達到找工作這種程度,親測只要學習方向正確+夠努力,完全可以在3-4個月完成。
一上來就像吃透這個,吃透那個的*思想,*還沒入門就入土了。
在學習之前,*重要的不是找教程,方向和方法比教程更重要。
很多人以為嵌入式開發(fā)就是搞ARM,搞Linux。
實際上,嵌入式開發(fā)分很多方向。
主流的方向有:
單片機開發(fā)Linx驅動/應用開發(fā)FPGA,不了解不做講解這是兩個是目前市場需求*大的,單片機開發(fā)和Linux驅動開發(fā)偏向硬件,Linux應用開發(fā)基本是軟件。
前期一定要先根據(jù)個人情況確定好自己要從事的方向,不同的方向學習內容也不一樣。
很多人搞不清方向,以為嵌入式開發(fā)又要學單片機,又要學Linux,學了1年門都沒入。
我做了單片機開發(fā)10年,對這個行業(yè)比較熟悉,就拿這個方向做詳細講解,技術不用學多,深耕一個就夠了。
單片機開發(fā)應該是屬于*好入門的,Linux驅動/應用開發(fā)相對難點,工資Linux也相對高點。
不過做得越久,我越發(fā)現(xiàn)單片機開發(fā)其實并不比Linux開發(fā)簡單。
我反而覺得資源越豐富的,用起來反而更簡單。
舉個例子,很多做家用消費類產(chǎn)品的芯片都是選非常便宜的,內存也非常小,資源非常匱乏。
他們寫程序都是用匯編,算著匯編指令去寫的。
你可以用資源豐富的芯片做,然后用c把代碼寫的很健壯,但是成本*比別人高。
哪怕一顆芯片只貴1毛錢,如果一個月出貨10萬個,你就讓企業(yè)少掙1萬。
有些做嵌入式Linux開發(fā)的看不起做單片機開發(fā)的,覺得很簡單,沒什么技術難度。
等你做過研發(fā)負責人,你就明白任何一個產(chǎn)品,即便功能再簡單,要做好都是沒那么簡單的。
下面,我來總結下,學習單片機開發(fā)正確的學習路徑。
整個學習路徑我分為7步:
C語言基本語法C語言基本語法學習大概需要1-2周時間,這種教程網(wǎng)上已經(jīng)泛濫了,大多基于上位機的C語言,跟單片機C語言編程用起來還是有點差異。
我們這塊也專門錄制了一套教程,總結了我們這幾年實際開發(fā)*常用到的一些語法,可以到小破站找無際單片機編程直接看。
2.基礎電路
這一步走彎路的小伙伴*多,再重申一遍,不用死磕模電,甚至都不用去學。
學習電路*好的途徑就2個,一是開發(fā)板,二是項目。
然后通過項目不斷地積累電路,模電負反饋放大電路以后的知識點我在實際工作基本沒用到過。
而且我們定位單片機軟件開發(fā)的話,也不需要具備硬件設計能力,只需要看懂電路關鍵輸入輸出就行了。
簡單來說就是單片機通過什么方式控制電路,通過什么接口去采集電路過來的數(shù)據(jù)就行了。
3.51單片機
我*次接觸到的單片機是STC89C52RC,也就是現(xiàn)在開發(fā)板*常用*經(jīng)典的一款。
不管你通過哪一款去入手,51單片機我都建議必須學一下,如果你直接學STM32我也不攔你。
學習51單片機的目的是為了讓更好容易地去理解單片機的資源到底是怎么用起來的,怎么通過程序去控制電路的。
相當于為你后續(xù)學習別的單片機鋪路。
4.51單片機項目
學完前面3個基礎知識以后,到這一步,先把你前面所學的知識變成實實在在的項目,可以是一些小項目,比如說尋跡小車之類的,可以到某寶找一些DIY套件自己寫程序,也可以找無際單片機編程學習實際產(chǎn)品開發(fā)。
這一步非常重要,也容易被初學者忽略,這一步的目的是為了學習實現(xiàn)功能的思維,鍛煉代碼整合能力,這個能力比你會單片機更重要。
5.C語言高級用法
C語言基本語法學完了,也通過項目落到實處了,就需要學習一下C語言的高級用法了,比如說指針、結構體。
這塊也是為下一步學習STM32單片機做鋪墊,STM32的庫是面向對象的思維,如果不懂結構體和指針基本看不懂。
這塊我們無際單片機編程也有原創(chuàng)的、系統(tǒng)的開源教程在小破站。
這套教程是我2019年錄這玩的,本來想靠它掙點錢,后來工作一忙沒空搞,干脆開源出來。
不要以講師的標準去要求我,畢竟當初沒經(jīng)驗,而且是開源的。
但是課程內容個人認為還是非常有價值了,也是市面上學不到的,看過的評價也比較高。
6.STM32單片機
很多人學習STM32覺得很難,怎么跟51單片機的開發(fā)模式完全不一樣,控制一個IO口都這么麻煩。
STM32的資源比51單片機多太多了,寄存器自然也多,為了縮短大家開發(fā)周期,所以早期ST推出了固件庫。
直接調庫就能很輕松把STM32的外設用起來,而不需要關心底層配置了什么寄存器。
STM32學習我認為是會調庫把外設用起來就行了,不用研究這么深。
除非你以后的產(chǎn)品需要你用寄存器去開發(fā),再針對性去研究。
也不用所有外設都學習,可以看我上面那個思維導圖,我為大家總結了*常用的外設。
7.STM32項目
如果你堅持到這個環(huán)節(jié),那恭喜你,你已經(jīng)成功入門了。
接下來的時間,全部放在做項目上面,再去學別的單片機已經(jīng)沒太大意義了,使用起來都是大同小異。
你現(xiàn)在缺的是功能實現(xiàn)的思路,以及代碼實現(xiàn)的能力。
除了項目,沒有更好的方法,到這一步如果有條件了,一定要舍得花錢投資自己。
找一個行業(yè)經(jīng)驗豐富的人帶你,通過*短的時間去學習別人幾年的精華是很劃算的。
如果條件不允許或者不認可我說的,也可以去找一些開源的項目學習,只是自己摸索比較浪費時間。
還有就是到某寶找一些單片機的項目DIY套件,一般他們會有提供源碼,可以跟著學習。