嵌入式學習推送第一篇——單片機入門

簡介
作為嵌入式學習推送的第一彈,這篇小推送呢可以說是貨真價實(價值一般)。對大家而言,本篇而已只是引導大家學習,對于那些有在單片機一定基礎的同學,稍微看下,然后敬候我的第二篇就OK了。

一、前言

1、緒論

講道理呢其實也只是淺談,說是嵌入式,其實反倒是講一些入門嵌入式需要做好的準備工作。文章可能并沒有各位大佬那么鞭辟入里,但也希冀能給曾經和我一樣迷茫著、困惑著找不到方向的同學一點點小的建議。

2、推送安排

就我目前的推送安排的話,會以連載的形式做3~4的推送,都是涉及一部分技術的小文章,講述的也大都是我自己從學習51到學習嵌入式板子的經歷的反思,希望讀者能在我的經歷中得到一點啟迪吧,內容大體安排就是三篇:一篇51單片機(單片機入門階段),一篇STM32(單片機進階和提升階段),一篇ITOP4412(三星A9開發板,也就是嵌入式入門開發板)。
下面做一些關于這幾篇連載的說明。以后的這幾篇帖子看似是技術貼,其實也就是方向引導帖,旨在給初學者搭出一個框架,在學習的時候知道為什么學以及以后的路在哪。

3、文章針對對象

這幾篇推送適用的對象:喜歡微型計算機或者處理器,主要學習方向在于硬件邏輯的實現。
對嵌入式學習方向分類的話,我個人喜歡分成三個大的方向:底層硬件電路的設計以及實現、底層軟件驅動以及協議的編寫和上層系統裁剪以及軟件的開發。這幾篇文章主要針對的對象就是第二類方向,即底層軟件驅動以及協議的編寫,但也只是一個大的方向,說到底都是硬件邏輯的實現。至于硬件電路的設計實現和我們的關系不大,所以不會涉及。而上層系統的裁剪以及軟件的開發問題,我們有可能會會稍稍涉及,但是如果一開始是想做系統層面的開發的話,就沒必要過分的學習底層知識了。因為系統層面的知識體系才是根本,底層的知識只是你學習的加分項,千萬不要舍本逐末。
至此,我們可以開始我們的第一篇推送了。

二、單片機的選型

goto title1;

title1:emmm,開個玩笑,下面好好講話。

正如大部分人所說的那邊,學單片機亙古不變的起步就是學習51單片機。為何要從51開始學習呢,理由如下:
1、51單片機網上資料相當多,作為一個行業里已經被用爛,在學校里卻有著不小受眾的單片機,他擁有著及其豐富的資源。作為一款簡易落后的單片機,毫無疑問,他大部分的坑都被前人踩過無數遍了,因為在遇到問題時,甚至都不用翻墻查閱外網資料,看兩個百度搜索鏈接就把問題解決了。
2、51單片機入門的時候,平臺搭建簡易,代碼容易實現和看懂。對于大部分初學者而言,C語言的基礎約等于0,直接接觸高級的單片機勢必就要接觸到廠家提供的函數包,里面豐富的函數定義、指針、引用、結構等等稍微看起來有點高級的語法,讓初學者目瞪口呆,望而卻步。
3、最重要的一個原因:便宜,入手價格20元左右的核心板就可以開始學習,開發板的話100塊以內就能買一個很不錯的板子了。
講道理原因不是什么特別重要的東西,你只需要記得51單片機適合新手學習就OK了。當然了,有一定的編程能力并且對C語言有一定的了解的同學,想跳過51單片機,直接學習后面的32位的單片機,我覺得問題也不太大,只要需要付出更多的時間罷了。如果有一定的C語言基礎和編程能力,強烈推薦學習STM32等Cortex---M系列的單片機,51只是對于C語言能力不足的妥協,畢竟51已經落后于時代潮流很久了,精不精通意義不大。但是是直接向上Cortex-A系列單片機的同學,我只想說:請開始的你的表演。

三、單片機的學習

1、學習的方法

學習51單片機的方法一般都是通過書、文獻類PDF或者視頻。對于學習能力較差的同學,我推薦你跟著視頻學習,視頻講解的十分細致,會告訴你哪里需要學,哪里跳過。但是對于大部分學生來說,我更推薦的是利用書或者是文獻。買開發板的同學一般賣家都會給你一大堆資料,里面有對應的學習文獻,對應他的章節進行學習即可。賣家給的資料如果質量很差甚至沒有的同學,推薦大家看51行業的老大哥:郭天祥的《新概念51單片機C語言教程》,至于老大哥的板子并不推薦大家購買,老大哥的板子有點貴,所以不如大家在淘寶挑一個其他牌子的51單片機。
小結下,最普遍的學習方法就是對照著郭天祥的51單片機教程,買一個單片機,按照他的教程進行學習。在過程中會遇到板子和書不匹配帶來的代碼移植問題,但是我覺得都是非常小的問題,百度搜索幾條鏈接就能解決。

2、重要信息的獲取

學習51單片機最忌諱的就是按照高中的那套,將所有的內容記下來,一本書幾百頁,并不是所有內容對你都是有用的。學習單片機最需要思考的是:你需要掌握的內容是什么。單片機對于大部分人來說只是一個工具,就初學者而言并沒有什么算法可言,就是功能的實現,所以有時候會用比理解要簡單多,對于初學者而言,應該先學會用起來,然后慢慢的理解。
其次還要注意,不是書上所有的內容都是你需要去記憶的。就比如郭天祥書上的第一章,會講很多的內容,但是大部分內容是只需要你了解,并不需要你去記憶的東西,比如:51單片機型號命名的原則、封裝、引腳以及引腳功能之類的,這類內容你并不需要去記憶,當你需要的時候直接去翻閱書籍就OK了,而且也很少會被用到。你應該學習的是編程語言和功能實現的能力。
編程語言在單片機里面主要是指C語言,書很多,入個門沒什么難度,功能實現而言在前面幾章都是很容易實現的,但是后面難度上來了,往往容易讓人萌生放棄的想法,其實講道理,無論你學習什么都會遇到這種情況,在開始階段很容易解決,越往后越耗費精力。其實,每次你覺得來了一個比較大困難時,時候就是能力發生突變的關鍵點,因為你遇到了挑戰你原本能力范圍的困難,但一旦將困難啃下來,能力將發生一個飛躍。
至于功能實現的部分,主要指的是底層寄存器的配置。51單片機功能的實現都是通過底層寄存器來實現的,寄存器數量不多,也沒必要記每個寄存器的功能和對應的位含義,可以自己整理成一個文檔,當然也可以直接每次需要的時候翻書。寄存器的配置難度其實也不大,就是一些常規討論,把對應寄存器位填寫數據即可。

3、學習單片機的忌諱

忌諱一:瘋狂看書不寫代碼者。不寫代碼的階段各不相同,有的人一開始就不寫代碼,只是單純的看書,覺得看懂了就和這本書就此別過,有的人在前面幾次還會動手寫寫代碼,隨著漸漸代碼量上來了,就不愿意動手寫代碼了。怕麻煩肯定學不好編程,理論要和實踐并駕齊驅,就算是做理論研究的,也不可能脫離實際做科研。一般代碼量小的同學,在遇到一個工程時,需要花費的時間是經常寫這類代碼的同學的幾倍,甚至可能還解決不了問題,即使你覺得你會了。看了和理解了是一個層次,理解了和能寫出來是另一個層次。難度系數自己實踐下就知道了。
忌諱二:一瓶不響,半瓶晃蕩。萬不可學習了一星半點之后就自我滿足、自我膨脹。從書上敲兩行代碼,就敢說自己會了,自己學的很棒棒。那么學習到什么程度算是學習的比較好呢。所有的功能配置會通過代碼實現,可以自己獨立編寫小的工程。(網上還有一些51單片機的外包單,如果能做出來就算水平很高了,會寫簡單的驅動,可以實現4,5個功能集成的工程,也算可以了)
四、51單片機學習的本質
講道理51單片機真的只是用來入個門,它只是一個工具。在學習51的過程中最重要的是提升代碼的編程能力(主要是C語言的學習能力),其次是會配置寄存器,平臺熟悉后,能夠獨立編寫一些工程時,開始學習32位的單片機問題也不大。學習51單片機只是為了后面學習嵌入式打下一點基礎,如果C語言基礎過關,懂一點寄存器的知識,只需要大體了解下單片機是什么,就可以直接上32位的單片機。
五、結尾的XJB扯淡
隨便談談人生,講講理想。單片機只是工具,只是加分項,并不是你的核心生產力。對單片機功能配置熟悉以后就很膨脹的話其實是一種很蠢的行為,因為只是實現了一些基礎且沒有太大意義的東西,這種東西人人簡單學習后都會。問題多了解決的方法就多了,并不可能就只用一個工具打天下,用一塊51就能掌控世界顯然也是不現實的。編程的核心是算法,平臺變了,解決問題的思想和邏輯卻沒有變,舍本逐末的去過分的炫耀平臺使用的能力,還不如踏踏實實學點基礎理論的知識。至于知識體系的問題,考慮到篇幅,就放到下次的推送里面講吧。
最后一點建議,就是課內知識很重要,別為了獲得解決問題的工具,放棄了解決問題的方法。即使你想做的和本專業無關,那就把相關專業的基礎課學學好。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 姓名:吳兆陽 學號:14020199009 轉自韋東山 嵌牛導讀:對嵌入式初學者,沒有足夠的視野選擇一個合適投入方...
    吳兆陽閱讀 2,412評論 0 4
  • 姓名:屈彥維 學號:16020610026 引自:http://lw.3edu.net/qrs/lw_46788....
    懷光_ee48閱讀 1,981評論 0 0
  • 前言 正在寫作這篇文章的筆者是一名大四的軟件工程學生,因為實習工作的需要,奉命研究單片機開發,所以我所扯的內容可能...
    兔子澤閱讀 5,575評論 18 57
  • 秦艽 別名:大葉龍膽、大葉秦艽、西秦艽 基源植物:龍膽科植物大葉秦艽、麻花秦艽、粗莖秦一和小秦艽的干燥根, 拉丁學...
    本草園丁閱讀 1,842評論 0 2
  • 回顧總結 老師觀察很透徹,對演講者的剖析讓我們學到很多。 演講者的套路其實也很讓人喜歡。 教師培訓不應該只是為了證...
    行走的小米閱讀 527評論 0 0