寫這篇文章的初衷要從最近帶我一個朋友入坑學習單片機的經歷開始講起;
我要用梁靜茹給我的勇氣寫寫如何入坑單片機;
我的一個朋友以前是汽車電子技術專業,畢業之后去做了和汽車相關的工作,修了一年車;
其實干一行愛一行,三百六十行,行行出狀元,確實挺好的;
不過修車總給他一種一眼看到頭的感覺(子非魚,安知魚之樂?對不起,他自己告訴我的);
于是,他跳槽了,找了一份電子工程師的工作;
工作內容和我差不多,平日里打打雜;
平淡的日子就這樣重復著,直到有一天,他說想學單片機;我準備給他支支招。
基礎部分
DAY 1
第一天,幫他整理了整體的學習路線,基礎知識篇;
C語言是一本必須掌握的編程語言,看視頻的效率相對來說會高一點,所以我給他推薦了B站 浙大翁愷老師的C語言視頻;
因為視頻還挺長的,我只推薦他看了比較基礎的部分,做一下課后習題,掌握基本的語法,if,while,for等語句;
紙上得來終覺淺,學單片機還是重在實踐;為了開源節流,我把以前吃灰的STM32開發板拿給他,畢竟資料很多嘛,學起來也方便;
理想是很豐滿:原本計劃用cubemx+st官方的HAL庫來進行實踐,畢竟B站還有之前開發板的配套資料也不少;
現實卻很骨感:
裝cubemx軟件就搞的滿頭大汗了,最后是安裝的JDK版本不對,直接裂開,一個晚上時間沒了;
我給他操作了一遍使用cubemx配置自動生成代碼,然后點亮一個LED,整個過程很順利,沒有寫一行代碼,但是我給他解釋代碼的時候,他是完全懵逼的狀態,不知其所以然,這里有十萬個黑人問號臉!!!
好吧,畢竟HAL庫封裝的很不錯,感覺對新手不太友好(前面提到他C語言基礎還不是很扎實);
后來我知道他偷偷跑去看結構體和指針的內容了。
看來還是得用51單片機,因為簡單,可以先點亮一個燈,建立起興趣;
給他推薦了某寶的一塊51單片機開發板,隨便找的,功能都大同小異;
DAY 2 —DAY N
開發板隔天就到了,看配套視頻,寫下了單片機的hello world,然后燈就亮了;
#include
同樣是點亮一個LED,但是這次好像有內味道了,看到實驗成果,他笑出了豬叫;
后面給他推薦了郭天祥的視頻《十天學會單片機》;
看視頻,一邊補充C語言知識,一邊對照著每個單片機講解視頻進行學習,視頻中的講解大多比較淺顯易懂,對于新手比較友好;
把課后習題一個一個做掉,流水燈,數碼管,串口,定時器,外部中斷,初步掌握這些基本的外設的應用之后,
他還嘗試做了一個循跡小車;雖然循跡小車比較簡單,但是很有里程碑意義的,這里面涉及到傳感器技術,直流電機的驅動,以及微控制器等技術;
雖然《十天學會單片機》的視頻標題略顯浮躁,但是作為入門,他花的時間遠比十天要長,所以新手千萬不要因為自己學得沒有別人快而焦慮,產生挫敗感,從而自我否定,自我懷疑;
但是需要及時思考和總結自己的學習方法是否高效,是否有辦法優化效率;
最后,按照我個人的觀點(如有偏駁,請輕拍),對于零基礎的新手,方法策略是實踐;
剛開始要避免學習冗雜的理論,選擇簡單友好的開發環境,不是一上來就是啃厚厚的理論書,學習工具鏈,學習Linux環境,匯編,這樣學習曲線太陡峭,容易產生挫敗感;
設置階段性的學習目標,可以拆分成容易完成的小任務,每完成一個任務都能形成正向反饋,增加信心,從而堅信自己能學好,能繼續學下去;
掌握對單片機進行應用的方法之后,可以以點帶面,再對知識盲區進行掃盲,從而拓寬知識的廣度同時,增加深度;
回歸正題
好了,下面言歸正傳,問題是如何系統地學習單片機,所以本文著眼于討論如何系統地學習單片機,而單片機這門技術是否有前景,則不做闡述。
如何系統地學習單片機?我感覺很難系統學習,因為這是一個多學科交叉的技術;
另外,如果你用單片機做不同的項目,應用到不同的領域,那有可能會涉及新的知識盲區;
所以是掌握好單片機這個技術的理論知識作為基礎支撐,然后不斷拓展自己的知識面,不斷提高知識深度;
下圖是我平時整理的思維導圖,做的不是很好,都是每次想到一些就補充一些,所以還有些凌亂;
如果覺得對你有幫助,可以在[小麥大叔]公眾號后臺回復[技術思維導圖]領取xmind格式的文件;
貼這張圖的目的是什么呢?只是想說明和單片機相關的技術會涉及到很多東西,所以著眼點應該是加強基礎知識的建設;
基礎編程
C語言必須精通,但絕非一朝一夕的事情,需要大量時間去實踐,去寫代碼,去調試,去做項目,同時還得學習理論,通過實踐加深理解,推薦書籍《C 和指針》,《C 陷阱與缺陷》等;
語言只是工具,學會了C語言,你已經知道如何砌磚了,但是如何把樓蓋高,蓋牢,蓋的好看呢?
這時候,就需要學習數據結構,算法和設計模式,這里推薦《算法導論》,《代碼大全》都不錯,也是經典了,而且這兩本書也會長期陪伴著你;
再到后面,發現裸機編程已經很難滿足學習欲望了,這時候可能會學習實時系統了,FreeRTOS,RTThread,都是十分優秀的項目;
慢慢地學會讀這些項目的源碼,讀優秀項目的源碼,這是提高很快的途徑;
這時候,還不夠,操作系統,微機原理(EE)/計算機組成原理(CS),這些書可以操作起來了;
后來還可能會接觸到Linux,這是個龐然大物,LKD,LDD,ULK,這三本書,就夠啃了;當然前提還得學會Linux環境下編程,shell腳本,makefile等等等,內容太多了,我對Linux涉獵不是很深入,如果是做應用的話,AUPE啃一下,一定會受益匪淺的;
硬件部分
模擬電子技術和數字電子技術,如果是EE科班都會開設這兩門課程的,如果是非科班,零基礎,可以自學一下;
推薦麻省理工的公開課《電路與電子學》,教授講得很好,里面已經涵蓋了模電和數電的內容;
原理圖設計,能看懂數據手冊,根據項目需求進行電子元器件的選型;
前提是,熟悉最基本的電子元器件,阻容,磁珠,MOS管,二極管等等;
另外還有功能元器件也需要了解,運放,數字IC,存儲芯片等等;
但是這還遠遠不夠,可能還要板載電源,用LDO,還是DCDC,如果是DCDC還得考慮紋波,噪聲等等,不過這好像和單片機又扯遠了(通常會有專門電源工程師),如果沒有,那你上;
PCB的Layout,需要學習一款EDA軟件,Altium designer用的比較多,Pads,開源的KiCad也不錯,多用用就熟練了,不懂的多問搜索引擎;
Layout的設計規范可以參考一下華為的設計規范,注意一下板機的EMC,布線,鋪銅,接地方式以及回流面積,如果是低速板,相對難度會小一點,硬件的坑很深,甚踩;
最后我想說的是最重要的還是實踐,實踐,實踐,自己做個板子,發出去打樣,現在打樣還是很便宜了,甚至連SMT都包了,軟件靠精力,硬件靠經歷,多爬坑,學的就多了,會的也就多了,技術在于積累。
總結
本文簡單介紹了學習單片機的技術路線,分別從軟件角度和硬件角度給出了簡單的方法,單片機開發是軟硬結合的,所以軟件的學習和硬件的學習,缺一不可;
筆者能力和水平有限,文中難免存在錯誤和紕漏,請大佬不吝賜教。
原文標題:我的單片機成長之路
文章出處:【微信公眾號:傳感器技術】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
單片機
+關注
關注
6037文章
44568瀏覽量
636058 -
元器件
+關注
關注
112文章
4720瀏覽量
92442
原文標題:我的單片機成長之路
文章出處:【微信號:WW_CGQJS,微信公眾號:傳感器技術】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論