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