標(biāo)題: 單片機(jī)學(xué)習(xí)路線(xiàn) [打印本頁(yè)]

作者: 1444522629    時(shí)間: 2018-12-19 16:45
標(biāo)題: 單片機(jī)學(xué)習(xí)路線(xiàn)
單片機(jī)怎么學(xué),學(xué)哪款單片機(jī)呢?(大一大二)入門(mén)級(jí)推薦學(xué)習(xí)51單片機(jī)。因?yàn)椤?1單片機(jī)簡(jiǎn)單易上手資料多,當(dāng)然最最重要的是,本人發(fā)現(xiàn)了51單片機(jī)的一套秒殺本人接觸過(guò)的所有教程的資料——金沙灘宋老師的手把手教你學(xué)51單片機(jī),絕對(duì)經(jīng)典。(我不是他的托,他沒(méi)給我錢(qián),我也沒(méi)買(mǎi)過(guò)他的東西,免費(fèi)用的他的資料)這里得好好感謝宋老師。很多人推薦guo的單片機(jī),說(shuō)實(shí)話(huà)guo的代碼真的相當(dāng)不咋地,同時(shí)肯定也有很多人推薦普中單片機(jī)的,說(shuō)實(shí)話(huà)普中的板子外設(shè)挺多的,價(jià)格相對(duì)還便宜,但是它配套的教程也真的不咋地。代碼風(fēng)格一塌糟,而金沙灘宋老師,人家是公司工作好多年的工程師,編程規(guī)范較好。并且我認(rèn)為這個(gè)教程,教你的不僅僅是51單片機(jī),他教你的是 – 單片機(jī)這個(gè)類(lèi)的東西,不過(guò)載體是51罷了。這本書(shū)呢他穿插了很多c語(yǔ)言的知識(shí)和很多電子硬件設(shè)計(jì)的知識(shí),總體來(lái)說(shuō)非常非常適合(大一大二的)小白用戶(hù)學(xué)習(xí)。絕對(duì)秒殺很多高校老師教的課,秒殺51單片機(jī)同行列教程。(不過(guò)宋老師板子比較貴)
他的課是一節(jié)串一節(jié)的,上節(jié)學(xué)過(guò)的東西,這節(jié)基本上要用,下節(jié)還要用。上面有很多知識(shí)點(diǎn)可以參考學(xué)習(xí),而且很多優(yōu)秀的編程思想和編程習(xí)慣分享給大家。
關(guān)于大三同學(xué),說(shuō)實(shí)話(huà)時(shí)間比較緊了,可能上課老師直接教的是stm32單片機(jī),那就直接學(xué)32單片機(jī)吧。關(guān)于stm32單片機(jī)方法論,見(jiàn)下面stm32部分

關(guān)于單片機(jī)怎么學(xué)下面附上宋老師書(shū)的開(kāi)篇語(yǔ):

“下面,就是我總結(jié)的跟著我學(xué)習(xí)單片機(jī)的四個(gè)步驟。

第一步:鸚鵡學(xué)舌。

剛出生的孩子叫“爸爸”“媽媽”的時(shí)候,他甚至不知道“爸爸”“媽媽”是什么意思,
更不會(huì)理解這些聲音是什么意思,但是我們帶著孩子見(jiàn)到他爸爸就讓他喊“爸爸”,見(jiàn)到媽
媽就讓他喊“媽媽”,見(jiàn)到爺爺就喊“爺爺”„„慢慢的你會(huì)發(fā)現(xiàn),次數(shù)多了,孩子就知道
誰(shuí)是爸爸,誰(shuí)是媽媽?zhuān)l(shuí)是爺爺,誰(shuí)是奶奶了。
大家剛開(kāi)始接觸單片機(jī)的時(shí)候,也屬于單片機(jī)行業(yè)的新生兒。單片機(jī)的樣子,單片機(jī)外
圍的各種器件,單片機(jī)內(nèi)部的各種結(jié)構(gòu),單片機(jī)使用 C 語(yǔ)言的編程方法,初學(xué)者可能都沒(méi)有
見(jiàn)過(guò),腦子里全無(wú)概念。沒(méi)關(guān)系,有些概念和方法你不理解也沒(méi)有關(guān)系,甚至不需要你去理
解,你只需要跟著我去鸚鵡學(xué)舌式的學(xué)習(xí),第一遍學(xué)習(xí)某一節(jié)課的內(nèi)容時(shí),對(duì)于程序,大家
就可以完全跟著抄下來(lái),甚至抄兩三遍,過(guò)一段你會(huì)發(fā)現(xiàn),好多東西你也認(rèn)識(shí)了,好多概念
你也慢慢的理解清楚了, 你也能大概看懂別人的小程序了,切忌覺(jué)得自己看會(huì)了,而簡(jiǎn)單復(fù)
制粘貼。

第二步:照葫蘆畫(huà)瓢。

很多同學(xué)學(xué)習(xí)的時(shí)候喜歡看,看我做的視頻,看我寫(xiě)的程序,甚至看別人的程序,都能
看懂,覺(jué)得自己就會(huì)了,等到自己寫(xiě)程序的時(shí)候,感覺(jué)就是老鼠啃天,不知道從哪里下手了,
這是初學(xué)者很容易犯的“眼高手低”的毛病,所以第二步的內(nèi)容就非常重要了。
我的要求是,每一位同學(xué),在學(xué)完了當(dāng)前課的內(nèi)容,把第一步順利完成以后,然后關(guān)掉
視頻教程,關(guān)掉源代碼,自己通過(guò)看電路圖和查找非源代碼的其他任何資料,把當(dāng)節(jié)課我寫(xiě)
的程序代碼重新默寫(xiě)出來(lái),邊寫(xiě)邊多少理解那么一點(diǎn)點(diǎn),不是純粹的背誦,應(yīng)該說(shuō)是背誦加
理解的結(jié)合體。甚至學(xué)過(guò)幾節(jié)課以后,可以回頭把前邊曾經(jīng)這樣實(shí)現(xiàn)過(guò)的課程,再按照這種
方法做一遍。千萬(wàn)不要認(rèn)為這一步?jīng)]必要,這一步是你能否真正學(xué)會(huì)單片機(jī)的一個(gè)關(guān)鍵,在
學(xué)完本教程之前,每一課內(nèi)容都要這樣做,如果每一個(gè)程序你都能夠完美的完成,那么可以
說(shuō),當(dāng)節(jié)課的內(nèi)容,百分之七八十你已經(jīng)掌握了。

第三步:他山之石,可以攻玉。

單片機(jī)技術(shù)的最大特點(diǎn)就是可以通過(guò)修改程序來(lái)實(shí)現(xiàn)不同的功能,因此舉一反三的能力
就必不可少了。每一節(jié)課的例程后邊,我一般都會(huì)布置幾個(gè)作業(yè),大家盡量去獨(dú)立完成這個(gè)
作業(yè)。在完成這個(gè)作業(yè)的過(guò)程中,都可以參考我的程序思路,在這個(gè)基礎(chǔ)上通過(guò)動(dòng)腦思考去
構(gòu)建你自己的程序框架,最終將程序完成。
在我們工程師實(shí)際產(chǎn)品研發(fā)的時(shí)候,很多種情況下也是如此。比如一個(gè)產(chǎn)品,我們?nèi)绻?br /> 從零起步的話(huà),可能會(huì)走很多彎路,遭遇很多前人已曾遭遇過(guò)的挫折,所以我們通常的做法
是尋找購(gòu)買(mǎi)幾款同類(lèi)產(chǎn)品,然后先研究他們的各自?xún)?yōu)缺點(diǎn),學(xué)習(xí)他們的長(zhǎng)處,然后在同類(lèi)產(chǎn)早就遇到過(guò)了,所以遇到問(wèn)題后,不要慌張,首先利用谷歌或者百度這些搜索引擎在網(wǎng)上搜
一下,要做什么新東西,先去網(wǎng)上找相關(guān)資料了解一下,不管是編程還是硬件設(shè)計(jì),多多參
考別人的東西,只要把別人的東西分析明白了,自己用起來(lái)了,也就成為自己的知識(shí)了。

第四步:理論實(shí)踐結(jié)合,溫故知新。

當(dāng)大家把所有的課程都按照前邊三步完成后,這個(gè)時(shí)候不妨再把書(shū)打開(kāi),再看看書(shū),經(jīng)
過(guò)了自己的實(shí)戰(zhàn)經(jīng)歷,再看書(shū)的時(shí)候,對(duì)很多知識(shí)點(diǎn)會(huì)有一種恍然大悟的感覺(jué)。甚至視頻教
程、書(shū)籍都可以反復(fù)看幾遍,可能有的知識(shí)點(diǎn)當(dāng)時(shí)學(xué)習(xí)的時(shí)候不明白,過(guò)了一段時(shí)間,回過(guò)
頭來(lái)再學(xué)習(xí)的時(shí)候,一下就明白了!

好了話(huà)引用到此,我也想說(shuō)幾句:想學(xué)好單片機(jī)一定要能有耐心、信心、恒心。這里我送大家一個(gè)字:靜。很多人太浮躁了,浮躁是干不了什么事的,一定要靜下心來(lái)~come on

我的單片機(jī)方法論:

當(dāng)你玩了一定時(shí)間單片機(jī),玩明白之后,你如果又發(fā)出這樣的感慨:我靠,51單片機(jī)原來(lái)這么簡(jiǎn)單。那么恭喜你,你應(yīng)該是拿下單片機(jī)了。下面說(shuō)說(shuō)我的單片機(jī)方法論:
51單片機(jī)呢說(shuō)實(shí)話(huà)很簡(jiǎn)單的,首先你要有一個(gè)概念:學(xué)單片機(jī)和學(xué)單片機(jī)外設(shè)【這里的外設(shè)和下面都指的是單片機(jī)的片外外設(shè),不是片上的外設(shè)哦】是兩個(gè)不同的概念。。學(xué)單片機(jī)呢,其實(shí)單片機(jī)最小系統(tǒng)就擁有單片機(jī)的所有資源(板子上那么多的東西 其實(shí)都是外設(shè))一定要有這兩個(gè)概念:?jiǎn)纹瑱C(jī) 和 單片機(jī)外設(shè)的概念!締纹瑱C(jī)就是主控芯片,,,外設(shè)是接在其引腳上的東西】
下面是我總結(jié)的學(xué)單片機(jī)(后面)的幾重心法:

第一重心法:

先能大概看懂電路原理圖,知道哪個(gè)東西,連在了哪個(gè)引腳上,大致了解你的板子上有哪些外設(shè)東西。同時(shí)了解一點(diǎn)硬件基礎(chǔ)知識(shí),搞定自己電腦上的開(kāi)發(fā)環(huán)境,熟悉keil等軟件的使用,熟悉jlink使用【這個(gè)仿真器是在32等高級(jí)單片機(jī)上使用的】。

第二重心法:

能用c語(yǔ)言寫(xiě)基本的小程序,來(lái)操作硬件IO口。啥意思呢,也就是你可以通過(guò)自己的程序可以隨心所欲的控制單片機(jī)的IO口(引腳)的高低電平,落實(shí)到現(xiàn)象就是,你可以通過(guò)程序,實(shí)現(xiàn)點(diǎn)亮任意一盞接在你單片機(jī)上的小LED(LED小燈就屬于外設(shè)),升級(jí)版本就是:你可以自己寫(xiě)程序點(diǎn)流水燈玩。這一層能力是操作硬件IO口

第三重心法:

【對(duì)于stm32等高級(jí)單片機(jī)】學(xué)會(huì)使用jlink等仿真器的硬件仿真,硬件仿真很重要,51單片機(jī)仿真器貌似很貴的,反正我基本沒(méi)有用過(guò)51單片機(jī)硬件仿真。。用32單片機(jī)時(shí),會(huì)用jlink仿真會(huì)調(diào)出窗口,看各個(gè)變量的值等功能

第四重心法:

學(xué)習(xí)什么是定時(shí)器,什么是中斷,什么是定時(shí)器中斷。先學(xué)習(xí)這些東西是什么,能做啥。然后再開(kāi)始學(xué)習(xí)單片機(jī)上的這些東西怎么用c語(yǔ)言實(shí)現(xiàn)。這一層的能力在51上其實(shí)就是配置寄存器,這個(gè)能力很重要,雖說(shuō)stm32我基本不用寄存器,但是我能知道那些寄存器大概怎么配,都是靠51單片機(jī)啟蒙的。這個(gè)能力很重要,但是不難的,都是套路多套路幾遍就熟了。

第五重心法:

學(xué)習(xí)幾種通信協(xié)議,最常用的的串口(uart)通信協(xié)議,I2C通信協(xié)議。其他如SPI,CAN總線(xiàn)等我用的不多,等用的時(shí)候再去學(xué)就是了。其實(shí)還是套路,再多套路幾遍。
如果你大概堅(jiān)持到這,然后學(xué)的差不多了,那么我恭喜你,單片機(jī)你已經(jīng)學(xué)完了。是的你沒(méi)聽(tīng)錯(cuò),單片機(jī)已經(jīng)學(xué)完了。注意這里是單片機(jī):不僅僅局限于51單片機(jī),其他單片機(jī)也是適用的。

第六重心法:

學(xué)學(xué)單片機(jī)開(kāi)發(fā)板上的一些外設(shè),用用一些常用的模塊,實(shí)現(xiàn)模塊所具有的功能。這一層的能力,是自己去看相關(guān)數(shù)據(jù)手冊(cè),使用手冊(cè)。這些需要自己去讀,能力強(qiáng)者自己就能寫(xiě)這些模塊的驅(qū)動(dòng)程序了。當(dāng)然一般情況下,買(mǎi)的模塊都是有例程的,可以參考例程自行優(yōu)化,編寫(xiě)屬于自己的驅(qū)動(dòng)代碼。我個(gè)人積累了一點(diǎn)自己的驅(qū)動(dòng)代碼庫(kù)。

第七重心法:

可以自己用開(kāi)發(fā)板做幾個(gè)稍大點(diǎn)的小項(xiàng)目了,做項(xiàng)目,一開(kāi)始要分析項(xiàng)目。小項(xiàng)目流程見(jiàn)最下面簡(jiǎn)述:(大二寫(xiě)的,不改了)

第八重心法:

深入學(xué)學(xué)c語(yǔ)言,回過(guò)頭刷刷升級(jí)書(shū),然后一定要注意編程規(guī)范性問(wèn)題,注意編程規(guī)范等吧。然后你就能升級(jí)玩32了。

關(guān)于32單片機(jī):給大家介紹一下基本武功秘籍,好好修煉吧。
武功秘籍一:STM32中文參考手冊(cè)(最新版)
武功秘籍二:STM32英文參考手冊(cè)(最新版)【中英互補(bǔ)】
武功秘籍三:STM32系列芯片的數(shù)據(jù)手冊(cè)
武功秘籍四:3.5固件庫(kù)使用手冊(cè)
武功秘籍五:3.5固件庫(kù)中的project中的例程
武功秘籍六:context-m3權(quán)威指南

其中 秘籍一和秘籍四是非常重要非常好用的工具書(shū)。我直接用pdf,搜索起來(lái)很方便,這些書(shū)不是讓你看,讓你背的,是當(dāng)你需要的時(shí)候,你知道到哪去看,到哪去找用的。我個(gè)人認(rèn)為自己32單片機(jī)學(xué)的算是不錯(cuò)的比較溜的,但是我感覺(jué)考試我肯定考不太高。。。因?yàn)槲覐膩?lái)不背這些。。。。

下一篇文章呢,我將帶大家看一下DMA 和ADC以及串口相關(guān)的東西,在那篇文章中我將帶大家看看 《STM32中文參考手冊(cè)》和《3.5固件庫(kù)手冊(cè)》怎么用,分享給大家一些好玩知識(shí)。這篇寫(xiě)的廢話(huà)挺多,寫(xiě)煩了。暫且這樣。

附錄:
下面是大二時(shí)寫(xiě)給我大無(wú)協(xié)的小師弟的
現(xiàn)在來(lái)分享一下我和隊(duì)友做小項(xiàng)目走的流程。(這些經(jīng)驗(yàn)僅供參考,愿你們棄其糟粕,取其精華)
以下是我從若干個(gè)項(xiàng)目中總結(jié)下來(lái)的理論,記住實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)!大家加油吧,在你們的項(xiàng)目中,你們可以嘗試使用下面的方法。
1,確定項(xiàng)目功能
和隊(duì)友討論你們要做的項(xiàng)目具有哪些功能,各功能可行性是怎么樣的,需要使用哪些元器件來(lái)完成這些功能,有沒(méi)有相關(guān)的產(chǎn)品或者作品參考,分析,討論寫(xiě)下詳細(xì)的作品說(shuō)明書(shū)。
事先一定要確定好作品說(shuō)明書(shū),后期制作基本都是參考說(shuō)明書(shū)(后期可以繼續(xù)完善說(shuō)明書(shū))

一般這步結(jié)束后,會(huì)有如下幾個(gè)文檔
a.作品詳情思維導(dǎo)圖
b.作品功能說(shuō)明書(shū)(實(shí)現(xiàn)那些功能,項(xiàng)目要求是啥)
c.作品方案設(shè)計(jì)文檔(用哪些東西,有哪些替代方案)

2,收集相關(guān)資料
包括芯片數(shù)據(jù)手冊(cè)
模塊使用手冊(cè)
參考例程
相關(guān)作品資料

3,搭出硬件測(cè)試環(huán)境
用最小系統(tǒng)板+模塊+自己焊的小電路搭建出硬件測(cè)試環(huán)境

4,用viso畫(huà)出程序流程圖
微軟的viso畫(huà)圖軟件很好用,需要學(xué)會(huì)畫(huà)程序流程圖。(團(tuán)隊(duì)間可以一起討論)程序流程圖搞定,整個(gè)程序的邏輯寫(xiě)起來(lái)就簡(jiǎn)單了。程序流程圖怎么畫(huà)?這里無(wú)法表達(dá)清楚,僅做提示:
完成系統(tǒng)初始化,設(shè)置標(biāo)志位,根據(jù)標(biāo)志位執(zhí)行動(dòng)作

5,將各模塊各功能分而治之
(分文件寫(xiě)驅(qū)動(dòng)代碼)
這個(gè)很重要,方便以后程序的移植!所以最好不要在同一個(gè)文件中寫(xiě)不同模塊的功能代碼!不要!不要!不要!

6,分功能測(cè)試驅(qū)動(dòng)代碼(分功能寫(xiě)出測(cè)試程序)
之前大二上學(xué)期的時(shí)候做過(guò)若干的小項(xiàng)目,都沒(méi)考慮過(guò)這步,而是直接上手集成所有代碼于一個(gè)項(xiàng)目下,,,然而集成完成后發(fā)現(xiàn)功能無(wú)法正常實(shí)現(xiàn)。。。。然后就查bug,,查bug,,查bug,,查bug。。。由于代碼太多,bug很難查的。所以很蛋疼,而且費(fèi)了很多時(shí)間,還不一定能查出來(lái)。。
也就是說(shuō)我認(rèn)為比較正確的方法是:把一個(gè)大工程分解成各個(gè)小工程,每個(gè)小工程呢,只實(shí)現(xiàn)其中的一項(xiàng)小功能,實(shí)現(xiàn)完成后,再將測(cè)試通過(guò)的驅(qū)動(dòng)代碼,放到大工程下。
總結(jié)起來(lái)就是:分模塊,分功能寫(xiě)驅(qū)動(dòng)測(cè)試工程。說(shuō)起來(lái)全是淚,都是自己摸索出來(lái)的

7,整合測(cè)試通過(guò)的驅(qū)動(dòng)文件
驅(qū)動(dòng)文件全部測(cè)試通過(guò)后,就可以集成到一個(gè)項(xiàng)目下了,同時(shí)主文件中的函數(shù)也可以根據(jù)程序流程圖進(jìn)行編寫(xiě)邏輯了

如果需要畫(huà)pcb電路板的話(huà)還需要做如下流程
8,根據(jù)確定好的io口,畫(huà)電路原理圖
(期間可能會(huì)用到模電相關(guān)知識(shí))
9,pcb布局布線(xiàn),開(kāi)板,焊板
布局布線(xiàn)也要分模塊畫(huà)。

10,分模塊調(diào)試pcb硬件。
硬件調(diào)試期間會(huì)教你熟練使用萬(wàn)用表和示波器等(PS說(shuō)多了也是淚)。期間芯片有可能焊接出問(wèn)題,引腳電平輸出有問(wèn)題。這些的測(cè)試我們常采用 寫(xiě)出讓芯片引腳高低電平變換的代碼,然后用萬(wàn)用表進(jìn)行測(cè)量。

以上僅供參考,這些是我們跌跌撞撞積累下來(lái)的一點(diǎn)經(jīng)驗(yàn)概括。希望對(duì)大家有所幫助

作者: yasi666    時(shí)間: 2019-10-10 12:28
寫(xiě)的不錯(cuò),肺腑之言+言傳身教,好師傅




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1