你點擊藍字關注,回復“入門資料”獲取單片機入門到高級開掛教程
文 | 無際(微信:603311638)
個人原創 | 第 128 篇
全文約2285字,閱讀大約需要 6分鐘
很多人覺得學習嵌入式開發比高考還難,不知道怎么入門?要學哪些東西?我相信大多數人學習的目的,都是先通過學習這個技能找份工作,然后慢慢深入。如果只是要達到找工作這種程度,完全可以在3-4個月時間完成。一上來就像吃透這個,吃透那個的專家思想,絕對還沒入門就入土了。在學習之前,最重要的不是找教程,方向和方法比教程更重要。這是兩個是目前市場需求最大的,單片機開發和Linux驅動開發偏向硬件,Linux應用開發基本是軟件。前期一定要先根據個人情況確定好自己要從事的方向,不同的方向學習內容也不一樣。很多人搞不清方向,以為嵌入式開發又要學單片機,又要學Linux,學了1年門都沒入。
我做了單片機開發10年,對這個行業比較熟悉,這個方向也相對好入門,就拿這個方向做詳細講解,技術不用學多,深耕一個就夠了。單片機開發應該是屬于最好入門的,Linux驅動/應用開發相對難點,工資Linux也相對高點。不過做得越久,我越發現單片機開發其實并不比Linux開發簡單。舉個例子,很多做家用消費類產品的芯片都是選非常便宜的,內存也非常小,資源非常匱乏。你可以用資源豐富的芯片做,然后用c把代碼寫的很健壯,但是成本絕對比別人高。哪怕一顆芯片只貴1毛錢,如果一個月出貨10萬個,你就讓企業少掙1萬。有些做嵌入式Linux開發的看不起做單片機開發的,覺得很簡單,沒什么技術難度。等你做過研發負責人,你就明白任何一個產品,即便功能再簡單,要做好都是沒那么簡單的。
C語言基本語法學習大概需要1-2周時間,這種教程網上已經泛濫了,大多基于上位機的C語言,跟單片機C語言編程用起來還是有點差異。我們這塊也專門錄制了一套教程,總結了我們這幾年實際開發最常用到的一些語法,可以到B找無際單片機編程直接看,都是開源的,教程相關課件源碼也可以找我來拿,微信603311638。
這一步走彎路的小伙伴最多,再重申一遍,不用死磕模電,甚至都不用刻意去學。然后通過項目不斷地積累電路,模電負反饋放大電路以后的知識點我在實際工作基本沒用到過。而且我們定位單片機軟件開發的話,也不需要具備硬件設計能力,只需要看懂電路關鍵輸入輸出就行了。簡單來說就是單片機通過什么方式控制電路,通過什么接口去采集電路過來的數據就行了。我第一次接觸到的單片機是STC89C52RC,也就是現在開發板最常用最經典的一款。不管你通過哪一款去入手,51單片機我都建議必須學一下,如果你直接學STM32我也不攔你。學習51單片機的目的是為了讓更好容易地去理解單片機的資源到底是怎么用起來的,怎么通過程序去控制電路的。學完前面3個基礎知識以后,到這一步,先把你前面所學的知識變成實實在在的項目,可以是一些小項目,比如說尋跡小車之類的,可以到某寶找一些DIY套件自己寫程序。一般他們也有提供源碼,只不過很多只是以實現功能為目的,與實際產品的代碼有區別。這里本來想給我們項目打個廣告,想想還是算了,好不容易積攢點粉,待會跑光了,哈哈,隨緣吧。這一步非常重要,也容易被初學者忽略,這一步的目的是為了學習實現功能的思維,鍛煉代碼整合能力,這個能力比你會單片機更重要。C語言基本語法學完了,也通過項目落到實處了,就需要學習一下C語言的高級用法了,比如說指針、結構體。這塊也是為下一步學習STM32單片機做鋪墊,STM32的庫是面向對象的思維,如果不懂結構體和指針基本看不懂。這塊我們無際單片機編程也有原創的、系統的開源教程在B站。
很多人學習STM32覺得很難,怎么跟51單片機的開發模式完全不一樣,控制一個IO口都這么麻煩。STM32的資源比51單片機多太多了,寄存器自然也多,為了縮短大家開發周期,所以早期ST推出了固件庫。直接調庫就能很輕松把STM32的外設用起來,而不需要關心底層配置了什么寄存器。STM32學習我認為是會調庫把外設用起來就行了,不用研究這么深。除非你以后的產品需要你用寄存器去開發,再針對性去研究。也不用所有外設都學習,可以看我上面那個思維導圖,我為大家總結了最常用的外設。如果你堅持到這個環節,那恭喜你,你已經成功入門了。接下來的時間,全部放在做項目上面,再去學別的單片機已經沒太大意義了,使用起來都是大同小異。除了項目,沒有更好的方法,到這一步如果有條件了,一定要舍得花錢投資自己。找一個行業經驗豐富的人帶你,通過最短的時間去學習別人幾年的經驗是很劃算的。如果條件不允許或者不認可我說的,也可以去找一些開源的項目學習,只是自己摸索比較浪費時間。還有就是到某寶找一些單片機的項目DIY套件,一般他們會有提供源碼,可以跟著學習。