個(gè)人心得
學(xué)單片機(jī)最好一開始就直接用C語(yǔ)言為單片機(jī)編程,既省時(shí)間,學(xué)起來(lái)又容易,進(jìn)步速度會(huì)很快。 先說(shuō)說(shuō)單片機(jī),一般我們現(xiàn)在用的比較多的的STM32、51等單片機(jī),它的資料比較多,市場(chǎng)也很大。
單片機(jī)這門課是一項(xiàng)非常重視動(dòng)手實(shí)踐的科目,不能總是看書,但是學(xué)習(xí)它首先必須得看書,因?yàn)閺臅心阈枰蟾帕私庖幌?,單片機(jī)的各個(gè)功能寄存器,而說(shuō)明白點(diǎn),我們使用單片機(jī)就是用軟件去控制單片機(jī)的各個(gè)功能寄存器,再說(shuō)明白點(diǎn),就是控制單片機(jī)那些管腳的電平什么時(shí)候輸出高,什么時(shí)候輸出低。 由這些高低電平的變化來(lái)控制你的系統(tǒng)板,實(shí)現(xiàn)我們需要的各個(gè)功能。至于看書,只需大概了解單片機(jī)各管腳都是干什么的?能實(shí)現(xiàn)什么樣的功能?第一次,第二次你可能看不明白,但這不要緊,因?yàn)檫€缺少實(shí)際的感觀認(rèn)識(shí)。 所以我總是說(shuō),學(xué)單片機(jī)看書看兩三天的就夠了,看小說(shuō)你一天能看五六本,看單片機(jī)你兩三天看兩三遍就夠了,可以不用仔細(xì)的看。 如果說(shuō)學(xué)單片機(jī)你不實(shí)踐那是不可能學(xué)會(huì)的,關(guān)于實(shí)踐有兩種方法你可以選擇。
方法一: 買一塊單片機(jī)的學(xué)習(xí)板,不要求功能太全的,對(duì)于初學(xué)者來(lái)說(shuō)你買功能非常多的那種板子,上面有很多東西你這輩子都用不著,我建議有流水燈、數(shù)碼管、獨(dú)立鍵盤、矩陣鍵盤、AD或DA(原理一樣)、液晶、蜂鳴器,這就差不多了。如果上面我提到的這些,你能熟練應(yīng)用,那可以說(shuō)對(duì)于單片機(jī)方面的硬件你已經(jīng)入門了,剩下的就是自己練習(xí)設(shè)計(jì)電路,不斷的積累經(jīng)驗(yàn)。
方法二: 你身邊如果有單片機(jī)方面的高手,向他求助,讓他幫你搭個(gè)簡(jiǎn)單的最小系統(tǒng)板。 對(duì)于高手來(lái)說(shuō),做個(gè)單片機(jī)的最小系統(tǒng)板只需要一分鐘的時(shí)間,而對(duì)于初學(xué)者可就難多了,因?yàn)橹挥袑?duì)硬件了解了,才能熟練運(yùn)用。而如果你身邊沒(méi)有這樣的高手,又找不到可以幫助你的人,那我勸你最好是自己買上一塊,畢竟自己有一塊要方便的多,以后做單片機(jī)類的小實(shí)驗(yàn)時(shí)都能用得上,還省事。 有了單片機(jī)學(xué)習(xí)板之后你就要多練習(xí),把學(xué)習(xí)板和電腦連好,打開調(diào)試軟件坐在電腦前,先學(xué)會(huì)怎么用調(diào)試軟件。從最簡(jiǎn)單的流水燈實(shí)驗(yàn)做起,等你能讓那八個(gè)流水燈按照你的意愿隨意流動(dòng)時(shí)你已經(jīng)入門了,你會(huì)發(fā)現(xiàn)單片機(jī)太好玩了。
興趣驅(qū)動(dòng)
做電子類設(shè)計(jì)的人真的會(huì)上癮。然后讓數(shù)碼管亮起來(lái),這兩項(xiàng)會(huì)了后,你已經(jīng)不能自拔了,你已經(jīng)開始考慮你這輩子要走哪一行了。興趣是最好的老師,推薦文章:嵌入式開發(fā)經(jīng)驗(yàn)分享,把學(xué)習(xí)當(dāng)作一種興趣。另外再引用論語(yǔ)中的一句話:
其為人也,發(fā)憤忘食,樂(lè)以忘憂,不知老之將至云爾。
論語(yǔ)·述而
大概意思就是說(shuō):他這個(gè)人啊,遇到想不明白的事情一定要研究清楚,為此可以忘記吃飯;樂(lè)在其中因而忘記了一切憂愁,甚至不知道衰老都要到來(lái)了呢,他就是如此而已。
在寫程序的時(shí)候你肯定會(huì)遇到很多問(wèn)題,而這時(shí)你再去翻書找,或是問(wèn)別人,當(dāng)?shù)玫浇獯鸷竽銜?huì)記住一輩子的,知識(shí)必須用于現(xiàn)實(shí)生活中,解決實(shí)際問(wèn)題,這樣才能發(fā)揮它的作用。 我告訴你單片機(jī)一旦學(xué)會(huì),永遠(yuǎn)不會(huì)忘了。 作為大學(xué)生,可以邊學(xué)單片機(jī)邊學(xué)C語(yǔ)言,C語(yǔ)言也挺簡(jiǎn)單,只是一門工具而已,我勸你最好學(xué)會(huì),將來(lái)肯定用得著,要不你以后也得學(xué),你一點(diǎn)匯編都不會(huì)根本無(wú)所謂,但你一點(diǎn)C語(yǔ)言都不會(huì)那你將來(lái)會(huì)吃苦頭。 匯編寫程序代碼效率高,但相對(duì)難度較大,而且很羅嗦,尤其是遇到算法方面的問(wèn)題時(shí),根本是麻煩的不得了,現(xiàn)在單片機(jī)的主頻在不斷的提高,我們完全不需要那么高效率的代碼,因?yàn)橛懈哳l率的時(shí)鐘,單片機(jī)的ROM也在不斷的提高,足夠裝得下你用C語(yǔ)言寫的任何代碼,C語(yǔ)言的資料又多又好找,將來(lái)可移植性非常好,只需要變一個(gè)IO口寫個(gè)溫度傳感器的程序在哪里都能用,所以我勸大家用C語(yǔ)言。 總結(jié)上面,只要你有信心,做事能堅(jiān)持到底,有不成功不放棄的強(qiáng)烈意志,那學(xué)個(gè)單片機(jī)來(lái)說(shuō)就是件非常容易的事。
學(xué)習(xí)實(shí)踐
單片機(jī)提高重在實(shí)踐,想要學(xué)好單片機(jī),軟件編程必不可少。但是熟悉硬件對(duì)于學(xué)好單片機(jī)的也是非常重要的。 如何學(xué)習(xí)好硬件,動(dòng)手實(shí)踐是必不可少的。我們可以通過(guò)自己動(dòng)手做一個(gè)自己的電子制作,通過(guò)完成它,以提高我的對(duì)一些芯片的了解和熟練運(yùn)用它。這樣我們就可以多一些了解芯片的結(jié)構(gòu)。我相信,你完成了一個(gè)屬于自己的電子制作,你的單片機(jī)水平就會(huì)有一個(gè)質(zhì)的提高。 這就是我學(xué)習(xí)單片機(jī)的心得體會(huì),希望給單片機(jī)的愛(ài)好者學(xué)好單片機(jī)有所幫助。 使用單片機(jī)就是理解單片機(jī)硬件結(jié)構(gòu),以及內(nèi)部資源的應(yīng)用,在匯編或C語(yǔ)言中學(xué)會(huì)各種功能的初始化設(shè)置,以及實(shí)現(xiàn)各種功能的程序編制。
第一步:數(shù)字I/O的使用
使用按鈕輸入信號(hào),發(fā)光二極管顯示輸出電平,就可以學(xué)習(xí)引腳的數(shù)字I/O功能,在按下某個(gè)按鈕后,某發(fā)光二極管發(fā)亮,這就是數(shù)字電路中組合邏輯的功能,雖然很簡(jiǎn)單,但是可以學(xué)習(xí)一般的單片機(jī)編程思想,例如,必須設(shè)置很多寄存器對(duì)引腳進(jìn)行初始化處理,才能使引腳具備有數(shù)字輸入和輸出輸出功能。每使用單片機(jī)的一個(gè)功能,就要對(duì)控制該功能的寄存器進(jìn)行設(shè)置,這就是單片機(jī)編程的特點(diǎn),千萬(wàn)不要怕麻煩,所有的單片機(jī)都是這樣。
第二步:定時(shí)器的使用
學(xué)會(huì)定時(shí)器的使用,就可以用單片機(jī)實(shí)現(xiàn)時(shí)序電路,時(shí)序電路的功能是強(qiáng)大的,在工業(yè)、家用電氣設(shè)備的控制中有很多應(yīng)用,例如,可以用單片機(jī)實(shí) 現(xiàn)一個(gè)具有一個(gè)按鈕的樓道燈開關(guān),該開關(guān)在按鈕按下一次后,燈亮3分鐘后自動(dòng)滅,當(dāng)按鈕連續(xù)按下兩次后,燈常亮不滅,當(dāng)按鈕按下時(shí)間超過(guò)2s,則燈滅。 數(shù)字集成電路可以實(shí)現(xiàn)時(shí)序電路,可編程邏輯器件(PLD)可以實(shí)現(xiàn)時(shí)序電路,可編程控制器(PLC)也可以實(shí)現(xiàn)時(shí)序電路,但是只有單片機(jī)實(shí)現(xiàn)起來(lái)最簡(jiǎn)單,成本最低。定時(shí)器的使用是非常重要的,邏輯加時(shí)間控制是單片機(jī)使用的基礎(chǔ)。
第三步:中斷
單片機(jī)的特點(diǎn)是一段程序反復(fù)執(zhí)行,程序中的每個(gè)指令的執(zhí)行都需要一定的執(zhí)行時(shí)間,如果程序沒(méi)有執(zhí)行到某指令,則該指令的動(dòng)作就不會(huì)發(fā)生,這樣就會(huì)耽誤很多快速發(fā)生的事情,例如,按鈕按下時(shí)的下降沿。 要使單片機(jī)在程序正常運(yùn)行過(guò)程中,對(duì)快速動(dòng)作做出反應(yīng),就必須使用單片機(jī)的中斷功能,該功能就是在快速動(dòng)作發(fā)生后,單片機(jī)中斷正常運(yùn)行的程序,處理快速發(fā)生的動(dòng)作,處理完成后,在返回執(zhí)行正常的程序。
中斷功能使用中的困難是需要精確地知道什么時(shí)候不允許中斷發(fā)生(屏蔽中斷)、什么時(shí)候允許中斷發(fā)生(開中斷),需要設(shè)置哪些寄存器才能使某種中斷起作用,中斷開始時(shí),程序應(yīng)該干什么,中斷完成后,程序應(yīng)該干什么等等。 中斷學(xué)會(huì)后,就可以編制更復(fù)雜結(jié)構(gòu)的程序,這樣的程序可以干著一件事,監(jiān)視著一件事,一旦監(jiān)視的事情發(fā)生,就中斷正在干的事情,處理監(jiān)視的事情,當(dāng)然也可以監(jiān)視多個(gè)事情,形象的比喻,中斷功能使單片機(jī)具有吃著碗里的,看著鍋里的功能。 以上三步學(xué)會(huì),就相當(dāng)于降龍十八掌武功,會(huì)了三掌了,可以勉強(qiáng)護(hù)身。
單片機(jī)都有USART接口,特別是MSP430系列中很多型號(hào),都具有兩個(gè)USART接口。USART接口不能直接與PC機(jī)的RS232接口連接,它們之間的邏輯電平不同,需要使用一個(gè)MAX3232芯片進(jìn)行電平轉(zhuǎn)換。 USART接口的使用是非常重要的,通過(guò)該接口,可以使單片機(jī)與PC機(jī)之間交換信息,雖然RS232通信并不先進(jìn),但是對(duì)于接口的學(xué)習(xí)是非常重要的。正確使用USART接口,需要學(xué)習(xí)通信協(xié)議,PC機(jī)的RS232接口編程等等知識(shí)。試想,單片機(jī)實(shí)驗(yàn)板上的數(shù)據(jù)顯示在PC機(jī)監(jiān)視器上,而PC機(jī)的鍵盤信號(hào)可以在單片機(jī)實(shí)驗(yàn)板上得到顯示,將是多么有意思的事情??!
第五步:學(xué)會(huì)A/D轉(zhuǎn)換
MAP430單片機(jī)帶有多通道12位A/D轉(zhuǎn)換器,通過(guò)這些A/D轉(zhuǎn)換器可以使單片機(jī)操作模擬量,顯示和檢測(cè)電壓、電流等信號(hào)。學(xué)習(xí)時(shí)注意模擬地與數(shù)字地、參考電壓、采樣時(shí)間,轉(zhuǎn)換速率,轉(zhuǎn)換誤差等概念。使用A/D轉(zhuǎn)換功能的簡(jiǎn)單的例子是設(shè)計(jì)一個(gè)電壓表。
第六步:學(xué)會(huì)PCI、I2C接口和液晶顯示器接口
這些接口的使用可以使單片機(jī)更容易連接外部設(shè)備,在擴(kuò)展單片機(jī)功能方面非常重要。
第七步:學(xué)會(huì)比較、捕捉、PWM功能
這些功能可以使單片機(jī)能夠控制電機(jī),檢測(cè)轉(zhuǎn)速信號(hào),實(shí)現(xiàn)電機(jī)調(diào)速器等控制起功能。如果以上七步都學(xué)會(huì),就可以設(shè)計(jì)一般的應(yīng)用系統(tǒng),相當(dāng)于學(xué)會(huì)十招降龍十八掌,可以出手攻擊了。
第八步:學(xué)習(xí)USB接口、TCP/IP接口、各種工業(yè)總線設(shè)計(jì)
學(xué)習(xí)USB接口、TCP/IP接口、各種工業(yè)總線的硬件與軟件設(shè)計(jì)是非常重要的,因?yàn)檫@是當(dāng)前產(chǎn)品開發(fā)的發(fā)展方向。 到此為止,還不到打遍天下無(wú)敵手的境界。但也算是單片機(jī)大牛了! 下文通過(guò)三個(gè)規(guī)劃,介紹大神之路。
單片機(jī)的“大神之路”:三個(gè)規(guī)劃
首先,單片機(jī)不是萬(wàn)能的,但沒(méi)有單片機(jī)那是萬(wàn)萬(wàn)不能的。社會(huì)在這方面的需求越來(lái)越大。所以你有什么好擔(dān)心的,怕自己沒(méi)有用武之地嗎?!怕自己的資薪?jīng)]有或不高嗎? 我自己在單片機(jī)和自己熟悉的行業(yè)上做了快10年了,自己的水平說(shuō)牛不牛,說(shuō)不牛也牛,該謙虛的時(shí)候也要謙虛學(xué)習(xí),畢竟單片機(jī)總是一個(gè)系統(tǒng)工程,方方面面的東西不是自己都要熟悉和精確把握的。 單片機(jī)的工作成果那只是一個(gè)配件,正因?yàn)槭恰芭浼?,所以你需要提供相?yīng)的物理尺寸,單片機(jī)系統(tǒng)的散熱,安裝條件和安裝方式等等情況,需要與你的上下游提供的環(huán)境配合好,而不是說(shuō)我的單片機(jī)功能完成了就沒(méi)我的事了,萬(wàn)事大吉了。
關(guān)于項(xiàng)目開展,推薦文章:梳理單片機(jī)學(xué)習(xí)方法、產(chǎn)品開發(fā)流程。 就僅對(duì)單片機(jī)需要實(shí)現(xiàn)的功能來(lái)說(shuō),如果你連功能都實(shí)現(xiàn)不了,那我還要你做什么——那只是基礎(chǔ)工作。 其實(shí),往往上下游提供的環(huán)境對(duì)你的設(shè)計(jì)就是一種考驗(yàn),也有你需要變換N種方案才能比較好的實(shí)現(xiàn)的可能。很明顯,這樣的上下游環(huán)境,對(duì)你就是一種很好的資源,不過(guò)有些人可能就會(huì)視而不見(jiàn),讓你更加熟悉自己開發(fā)的東西,在這個(gè)行業(yè)中的使用和價(jià)值情況,對(duì)自己的今后發(fā)展都是一個(gè)很好的參考。不像C、C++的人員到了沒(méi)有發(fā)揮平臺(tái)的時(shí)候,就很郁悶了。相反,對(duì)單片機(jī)來(lái)說(shuō),我們可以為自己建立那樣的可以供自己發(fā)揮和發(fā)展的平臺(tái)。
就我的理解出發(fā),單片機(jī)是相當(dāng)“底層”和“硬件”的東西,沒(méi)有太多高深的數(shù)據(jù)結(jié)構(gòu),也沒(méi)有太多需要技巧的編程算法,只要我們從單片機(jī)執(zhí)行的角度去理解和編程就行了。一個(gè)單片機(jī)就可以構(gòu)成一個(gè)電子系統(tǒng),也可以只構(gòu)成一個(gè)智能節(jié)點(diǎn)。沒(méi)有太多高深的東西需要去研究,因?yàn)槲覀冎皇菃纹瑱C(jī)的應(yīng)用者而已,別把自己提到“研究”的高度,我們只在“應(yīng)用”的高度。
多熟悉單片機(jī)的上下游環(huán)境和條件,那不是很困難的事。我希望自己理解的這些東西,對(duì)后來(lái)者有點(diǎn)幫助,對(duì)新手能夠帶來(lái)點(diǎn)思考的東西,那就夠了。
規(guī)劃高度一: 當(dāng)有一定的年齡和人力資源后,就可以自己出來(lái)做了,當(dāng)個(gè)所謂的半個(gè)老板了。但當(dāng)自己做老板說(shuō)容易也容易,說(shuō)不容易也不容易。當(dāng)初我就是在這樣的忐忑中,沖了進(jìn)去。項(xiàng)目接的很多,周期對(duì)自己規(guī)定的也很短,往往都是白天在處理前一個(gè)或前面項(xiàng)目的維護(hù)工作,晚上回來(lái)工作到一、二點(diǎn)開發(fā)新項(xiàng)目。 累就不用說(shuō)了,有時(shí)想想那是在拿自己的命來(lái)賺錢??!老婆不太同意我出來(lái)自己干,我就對(duì)老婆說(shuō),可能我不能每個(gè)月準(zhǔn)時(shí)的拿錢養(yǎng)家糊口,但我保證一年下來(lái)的平均每個(gè)月養(yǎng)家糊口的錢一定不會(huì)低于現(xiàn)在。 就這樣,我開始了走自己的路了。吃苦受累我不怕,付出了沒(méi)有收獲我不怕。怕的就是過(guò)不了自己的心理關(guān),還有所謂的某些情況下的“面子”。
至少我們應(yīng)該用“最小的代價(jià)”來(lái)給自己當(dāng)“學(xué)費(fèi)”。也不怕你們笑話,我的“學(xué)費(fèi)”交的也不少。一個(gè)成功的項(xiàng)目,不是你的功能有多好,有多強(qiáng),而是你的開發(fā)成功為你的項(xiàng)目方帶來(lái)了多少的利潤(rùn)收入,那才是真正的成功了,盡管你只賺了點(diǎn)兒開發(fā)費(fèi)。 做項(xiàng)目,別為自己考慮太多,多換位思考一下。人家能信任你,把項(xiàng)目交給你做,你就多該從項(xiàng)目方的角度考慮——也許有時(shí)他們的要求有點(diǎn)過(guò)分,但所謂不知者不去怪罪了。
規(guī)劃高度二: 做一個(gè)稱職的軟硬電子工程師吧。不用學(xué)太多,就學(xué)一些就行了,也不要去跟風(fēng),那個(gè)沒(méi)有必要。有時(shí),你就是去學(xué)了,如果沒(méi)有相應(yīng)對(duì)應(yīng)的開發(fā)任務(wù),學(xué)的也是皮毛,不過(guò)只要皮毛也可以了,當(dāng)你真正需要的時(shí)候,再拿起來(lái)就會(huì)快很多,也算是一種儲(chǔ)備吧。 但你至少要會(huì)一種,一種相對(duì)來(lái)說(shuō)狹隘的系統(tǒng)吧?!不怕你笑話,我就只會(huì)51單片機(jī)。先說(shuō)說(shuō)我自己了,從事工業(yè)自動(dòng)化方面的機(jī)床設(shè)備行業(yè): 精通51、STM32等,了解其他的單片機(jī),精通51匯編,精通CPLD,半精通C51(只用來(lái)做點(diǎn)人機(jī)界面工作),粗通FPGA(想精通自己做51IP核)。
精通三維造型軟件SOLIDWORKS(可以為自己的線路板造型和機(jī)械設(shè)備造型)
粗通機(jī)加工大部分的工藝。
精通鈑金和焊接。
熟悉數(shù)控設(shè)備、機(jī)床的實(shí)現(xiàn)解決方案。
對(duì)于每個(gè)人來(lái)說(shuō),學(xué)以致用,以前的我什么都想學(xué),什么都用不好,當(dāng)學(xué)的時(shí)候,卻沒(méi)有用的發(fā)揮平臺(tái),都是為學(xué)而學(xué)。但至少當(dāng)你要用的時(shí)候,重新?lián)炱饋?lái)的時(shí)候,就會(huì)很快。就拿ARM來(lái)說(shuō)吧,學(xué)的時(shí)候?qū)W的很努力,從其機(jī)理到實(shí)現(xiàn),也做過(guò)好多的實(shí)驗(yàn),可現(xiàn)在就是用的少就剩下了點(diǎn)概念的東西了。
所以沒(méi)必要什么都要精通,只要一樣,比如51單片機(jī)吧,從設(shè)計(jì)、投板、采購(gòu)、焊接、一直到調(diào)試成成品等等一個(gè)系統(tǒng)下來(lái),如果你思考了,如果你精通了,你還怕什么,不給高工資也要給你高年薪了,應(yīng)該都能了解“老板一將難求”的道理了。
規(guī)劃高度三: 做一個(gè)合格的新手電子工程師吧。對(duì)于新手,我的建議是:別上來(lái)就是一個(gè)什么五年十年規(guī)劃之類的,我們都是普通人,那種規(guī)劃不適合普通人。如果我們能將今后一年和二年的規(guī)劃做好了,那你就已經(jīng)很了不起了。
每天都是一個(gè)想法,每月都是一個(gè)變化,更別說(shuō)每年了,只要你在努力,腳踏實(shí)地的做事。不要把自己搞的太忙碌了,給自己每天留半個(gè)小時(shí)想想“心事”了。做好一樣,再發(fā)散開去,對(duì)于電子類的,什么ARM,DSP,51都是相通的。精通了一個(gè)體系,那么其他電子類的體系都是相通。怕就怕你什么都不通,都是半通。還半桶水的晃來(lái)晃去的,那就有點(diǎn)郁悶和悲哀了!
審核編輯:黃飛
-
集成電路
+關(guān)注
關(guān)注
5424文章
12050瀏覽量
368384 -
發(fā)光二極管
+關(guān)注
關(guān)注
13文章
1217瀏覽量
67633 -
51單片機(jī)
+關(guān)注
關(guān)注
277文章
5710瀏覽量
127356 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3298瀏覽量
118869 -
RS232
+關(guān)注
關(guān)注
13文章
808瀏覽量
95935
原文標(biāo)題:如何學(xué)好STM32、51單片機(jī)??
文章出處:【微信號(hào):ARM與嵌入式,微信公眾號(hào):ARM與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
如何學(xué)好stm32單片機(jī)
如何學(xué)好stm32單片機(jī)
如何才能學(xué)好單片機(jī)教你如何學(xué)好單片機(jī)經(jīng)驗(yàn)分享

51單片機(jī)和STM32單片機(jī)有哪些區(qū)別

51單片機(jī)應(yīng)該怎樣快速入門

STM32和51單片機(jī)如何選擇
如何才能學(xué)好單片機(jī)

stm32單片機(jī)和51單片機(jī)區(qū)別是什么
【單片機(jī)學(xué)習(xí)】STM32 和 51 區(qū)別

51單片機(jī)和STM32單片機(jī)區(qū)別在那里

如何學(xué)好單片機(jī)?

詳解STM32單片機(jī)和51單片機(jī)的區(qū)別
全方位對(duì)比STM32單片機(jī)和51單片機(jī)

評(píng)論