一、入門總結(jié)
1.1為什么要把時(shí)間花在“猶豫”上?
每當(dāng)我們在入門之前(ARM是這樣,DSP也一樣),總會(huì)有很多疑問,會(huì)有很多顧慮。我們渴望知道學(xué)習(xí)STM32前景如何?需要啥基礎(chǔ)?難不難?適不適合我?但是什么時(shí)候能心潮澎湃地、相當(dāng)著急地開始學(xué)STM32?日子在一天一天過去!你開始行動(dòng)了嗎?沒有行動(dòng)的思索,永遠(yuǎn)都不可能入門!把這些時(shí)間用來看書吧,效果能好一萬倍。
大家可能是從51單片機(jī)過來的,回想一下,我們之前學(xué)單片機(jī)時(shí)如何入門呢?實(shí)際上都是先看書(理論),再玩板子(實(shí)踐)。嚴(yán)格地說,應(yīng)該是模仿實(shí)驗(yàn)。熟悉之后才會(huì)自己寫程序代碼實(shí)現(xiàn)某個(gè)功能。因此,如果你正在咨詢STM32;如果你正對(duì)STM32心潮澎湃;如果你想入門STM32;那么,從現(xiàn)在開始,不要猶豫了,不要想再詳細(xì)地了解STM32的前景了。做一個(gè)可能影響你一生的決定吧!不用咨詢,不用興奮,開始看書籍(文檔)吧!!每個(gè)人都是這么走過來的。
1.2看資料需要計(jì)劃、耐心和速度
這里所謂的“資料”包括STM32書籍、文檔。因?yàn)镾TM32有個(gè)特點(diǎn),datasheet很多都是中文的,有些同學(xué)就沒有去買書籍,直接看STM32的用戶手冊,也是可以的。但是不管看書籍還是文檔,我們是需要計(jì)劃的。不是今天看3頁,明天看5頁。一本書看了兩個(gè)月,還在磨蹭。請記住,你學(xué)的不是寂寞,是STM32!
看書或文檔不是用來消遣時(shí)間的。背水一戰(zhàn)吧,給自己規(guī)定一個(gè)底線:兩周內(nèi)把一定粗略地過一遍!不要求都看懂,事實(shí)上,不可能都看懂。但我們必須理解基本知識(shí),對(duì)難度高的知識(shí)有一個(gè)印象,至少以后碰到問題的時(shí)候,我們會(huì)似曾相識(shí),感覺在哪里見到過,于是翻資料上網(wǎng)找答案——帶著問題的時(shí)候,效率才是超高的。
兩周過去了,STM32的知識(shí)你過一遍了嗎?沒看完?那么,你應(yīng)該考慮這些天中,你是否盡力了?是否真的想學(xué)STM32?或者還是看到STM32人氣很高,也想跟下時(shí)髦?是不是碰到問題沒法解決就想放棄了?現(xiàn)在是你做第二個(gè)決定的時(shí)候了,請決定你是否繼續(xù)攻讀STM32。如果是一時(shí)沖動(dòng)想跟時(shí)髦,請馬上放棄——你已經(jīng)浪費(fèi)兩周時(shí)間了,你還想再浪費(fèi)14天嗎?如果想吃得苦中苦,方為人上人,OK,請繼續(xù)往下看:)
1.3學(xué)STM32必備開發(fā)板
稍微了解一些理論知識(shí)后,現(xiàn)在擺在你面前,有兩條路:
第一,自己畫PCB制板、焊接、調(diào)試。
第二,購買一套性價(jià)比高的開發(fā)板。
筆者之前做過幾次PCB設(shè)計(jì),而且當(dāng)時(shí)在實(shí)驗(yàn)室可以報(bào)銷所有費(fèi)用,就自己做了一個(gè)PCB板。建議有報(bào)銷條件的同學(xué)自己設(shè)計(jì)一塊板子學(xué)習(xí)。畢竟2層PCB的設(shè)計(jì)不是很難。無法報(bào)銷的同學(xué),可以選購一款開發(fā)板來學(xué)。
總之一句話,選購的開發(fā)板一定要性價(jià)比最高的,最實(shí)惠的,而不是最貴的。實(shí)際上,大多數(shù)同學(xué)選購的開發(fā)板是用來學(xué)習(xí)的,不是用來項(xiàng)目開發(fā)的。因此,能讓你上手STM32,目的已經(jīng)達(dá)到了。
1.4熟悉開發(fā)板并試圖寫程序
這時(shí)的你,不能再停留在理論上了。你現(xiàn)在的心情,應(yīng)當(dāng)是:看到開發(fā)板,馬上就有一種說不出的興奮!但是,心急吃不了熱豆腐!請耐心把廠家配套的開發(fā)板使用手冊瀏覽一遍,熟悉你買的開發(fā)板。按照使用手冊,把開發(fā)板上的相關(guān)測試、操作步驟,都動(dòng)手做一遍,你會(huì)發(fā)現(xiàn),原來開發(fā)STM32是如此簡單!那么就讓我們開始STM32的開發(fā)之路吧!
如何進(jìn)行真正入門STM32,請看下面《STM32入門方法談》。
二、STM32入門方法談
2.1拿到開發(fā)板我該做什么?
國內(nèi)用戶有一個(gè)普遍現(xiàn)象:用戶拿到開發(fā)板后,不知道如何下手。由于沒有自己的思路,又是初學(xué)者,也沒有好的突破口,因此,買來開發(fā)板后,開機(jī),看看觸摸屏,感嘆“好漂亮”的屏幕顯示,然后就迷茫了。開發(fā)板是不會(huì)告訴你如何使用它的。開發(fā)板的光盤?光盤里放置一大堆資料——我該先看哪個(gè)?后看哪個(gè)?總之,我如何開始STM32的入門學(xué)習(xí)??
從拿到開發(fā)板后需要了解如何安裝J-Link、MDK(keil)調(diào)試軟件,一直到STM32上的UCOS移植,配合專門的教程,會(huì)在學(xué)習(xí)STM32的過程中少走許多彎路,提高學(xué)習(xí)效率了。
2.2我的時(shí)間如何安排?
筆者做任何事情前,習(xí)慣寫一個(gè)計(jì)劃——可能是在公司的時(shí)候,每天、每周、每月必寫計(jì)劃和總結(jié)養(yǎng)成的“毛病”,呵呵。正如在上一節(jié)中提及:我們要用一個(gè)月內(nèi)上手STM32!我們開始考慮,如何更好地利用好這一個(gè)月的時(shí)間呢?
我想起了第一天公司入職的情景。我的工作導(dǎo)師讓我先領(lǐng)一臺(tái)PC,安裝必要的軟件,然后告訴我近一個(gè)月的任務(wù)是什么。當(dāng)時(shí)我很不屑,因?yàn)閯倕⒓恿斯窘M織的培訓(xùn),以為自己啥都會(huì),但是失敗了。原因:盲目進(jìn)行項(xiàng)目,沒有一個(gè)計(jì)劃。
沒有計(jì)劃的日子會(huì)很慘。就像每天早上醒來睜開眼睛,卻不知道自己今天要干啥。閑話不說,我們談一談?dòng)?jì)劃和時(shí)間安排。
筆者認(rèn)為,學(xué)習(xí)STM32,實(shí)際上也是進(jìn)行項(xiàng)目的過程。進(jìn)行項(xiàng)目,就必須有項(xiàng)目進(jìn)度文檔,至少需要預(yù)計(jì)項(xiàng)目的耗時(shí)。雖然沒有那么規(guī)范,但建議大家至少要給自己一個(gè)時(shí)間表:告訴自己從2012年x月y日至2012年m月n日,必須能夠進(jìn)行獨(dú)立的項(xiàng)目開發(fā)。比如定為30天,把這個(gè)時(shí)間分三個(gè)階段:
第一階段:找感覺——談及STM32,立即反應(yīng)到調(diào)試的方法如何。
第二階段:修改例程——按自己的意愿修改例程,讓自己有點(diǎn)成就感。
第三階段:主動(dòng)攻擊——給自己找一個(gè)小項(xiàng)目,把它實(shí)現(xiàn)出來。
每個(gè)階段有一個(gè)目標(biāo)后,再細(xì)化該目標(biāo)到每天,寫出每天要完成的任務(wù)。注意,每天的任務(wù)不可太多,否則時(shí)間太緊,完成不了當(dāng)天的任務(wù),反而會(huì)進(jìn)入惡性循環(huán),導(dǎo)致第二天、第三天,以后的任務(wù)也將無法完成。最終導(dǎo)致整個(gè)計(jì)劃的失敗。
每天的任務(wù)需要根據(jù)自己的具體情況來定。如果有充足的時(shí)間,可以安排多一些任務(wù)。如果每天只有2個(gè)小時(shí),切記,寧可少安排任務(wù),也不可追求加快項(xiàng)目進(jìn)度。當(dāng)然,心中有事情后,每天自然就會(huì)忙碌起來!你的學(xué)習(xí)生活會(huì)更加充實(shí)!
2.3碰到問題怎么辦?
學(xué)習(xí)難免會(huì)遇到問題。在公司參加培訓(xùn)的時(shí)候,學(xué)員被告知:困難即機(jī)會(huì)。
所以希望大家坦然面對(duì)問題,不能逃避。一小部分同學(xué)在遇到問題的時(shí)候,總是想:能否避開走另一條路?比如調(diào)試程序,某一個(gè)程序的語法不太懂,就想用另一種表示方法來代替,或者直接注釋掉?!@是很可怕的。因?yàn)槟悻F(xiàn)在一旦放過一個(gè)問題,可能意味著你一輩子可能都沒有機(jī)會(huì)去碰這個(gè)問題。那么你的技術(shù)無法進(jìn)入最高境界。我們是為學(xué)習(xí)而來,說難聽點(diǎn),我們現(xiàn)在的付出,是想以后能有更好的回報(bào)的。
此外,碰到問題,不能馬上就到處求助。
原因:
1、這個(gè)問題可能是你的疑問,但它還不具體,你無法用最好的語言讓別人接受、理解,并且回答它。很多網(wǎng)友看到模凌兩可的問題,是不會(huì)回答的。比如Linux如何移植?這個(gè)問題,如果詳細(xì)說,需要用半本書來解釋——沒有人愿意花兩三個(gè)小時(shí)告訴你如何移植。所以這時(shí)候,你要做的,是先去查資料,自己試圖解決它。當(dāng)碰到某一個(gè)具體的步驟,實(shí)在想不通的時(shí)候,比如Linux移植過程中,文件掛載打印卡住了。這個(gè)現(xiàn)象,可能對(duì)有經(jīng)驗(yàn)的人來說,一句話就能點(diǎn)破。而你因?yàn)橛邢惹把芯康幕A(chǔ),一聽即可知道哪里出問題。這樣的方式,學(xué)習(xí)效率是最高的。
2、CPU是相通的,相信大部分的同學(xué)都學(xué)習(xí)過單片機(jī),是有一定基礎(chǔ)的。如果你碰到問題,去嘗試了,自己把問題解決了,你會(huì)很有成就感??!因?yàn)檫@是你獨(dú)立思考的結(jié)果??!當(dāng)然,你應(yīng)該寫一個(gè)總結(jié)文檔,收藏在PC中備忘。也可以把總結(jié)文檔發(fā)帖到論壇上,這樣的原創(chuàng)文檔,跟帖率是最高的。慢慢地,你在這個(gè)領(lǐng)域,有了網(wǎng)絡(luò)知名度?!@絕對(duì)是一筆財(cái)富。
當(dāng)然,筆者在此并不是不讓大家使用別的方式討論問題。相反,我提倡大家踴躍發(fā)言討論。剛才是就事論事,也是筆者自己的一點(diǎn)小經(jīng)歷。經(jīng)歷了,才發(fā)現(xiàn)如何做才更有效率。
三、STM32學(xué)習(xí)步驟
在第二章,我們已經(jīng)談及到學(xué)習(xí)需要計(jì)劃。那么,在這章節(jié),我們就來詳細(xì)地闡述這個(gè)計(jì)劃——僅供參考。
3.1關(guān)于STM32文檔學(xué)習(xí)
本期教程,我們假定大家已經(jīng)對(duì)STM32的書籍或者文檔有一定的理解。如不理解,請立即閱讀STM32的文檔,以獲取最基本的知識(shí)點(diǎn)。
STM32的學(xué)習(xí)與ARM9的學(xué)習(xí)有一個(gè)很大的區(qū)別。ARM9的學(xué)習(xí)一般是需要購買書籍的。比如三星的S3C2440,官方的文檔都是英文的,大部分工程師只能去看國內(nèi)出版的書籍。英文好的同學(xué),請不要以為你很牛,可以只看英文文檔。畢竟你是中國人,你最熟悉的,理解最好的還是中文??从⑽牡乃俣冗€是比看中文慢一些,我們要的是最短的時(shí)間,而不是追求短時(shí)間內(nèi)記住所有細(xì)節(jié)。當(dāng)然,如果是一篇論文,建議看英文原版還是有好處的。
STM32處理器進(jìn)入國內(nèi)市場時(shí)候,ST官方(或者第三方)的推廣工作做的非常好。翻譯了大量的英文文檔,迎合了國內(nèi)的很多工程師的思維。所以現(xiàn)在大部分STM32F103xxx的用戶datasheet都有中文版。因此可以不用去購買書籍,看電子檔即可。當(dāng)然,有雄厚經(jīng)濟(jì)條件的朋友可以購買本書籍哈~
該網(wǎng)址,是針對(duì)有充足的時(shí)間、精力的同學(xué),建議去下載需要查閱的文檔,以獲取更多信息。閱讀《STM32F103xxx參考手冊》,一定要注意,不需要全部閱讀——沒有時(shí)間的。建議選讀,但是前幾章必讀。存儲(chǔ)器和總線架構(gòu)、電源控制、備份寄存器、復(fù)位和時(shí)鐘控制,通用和復(fù)用功能I/O,中斷和時(shí)間等等部分一定要花時(shí)間閱讀。后面章節(jié),講述的是具體的功能模塊設(shè)計(jì)。如果我們用到哪個(gè)模塊,就可以去閱讀哪個(gè)模塊。比如在使用AD的時(shí)候,就需要去閱讀第10章ADC。其他不舉例。相信每個(gè)初學(xué)者都有自己的研究方向和判斷。
閱讀《STM32固件庫使用手冊》,主要是為了簡化編程。STM32給我們提供了一個(gè)非常好的固件函數(shù)庫,我們只要去調(diào)用即可。當(dāng)然,我們也可以不去碰這些固件庫——傳說使用它會(huì)使得代碼效率變低,是有道理的。網(wǎng)絡(luò)上也出現(xiàn)了很多網(wǎng)友自己寫的代碼,沒有使用帶固件庫函數(shù)。如何取舍,在于您的選擇。這里我主要強(qiáng)調(diào)的是,閱讀《STM32固件庫使用手冊》的時(shí)候,前面幾章也是必須閱讀的。比如第一章文檔和庫規(guī)范中的命名規(guī)則,編碼規(guī)則,這些都是需要注意的。第二章是最關(guān)鍵的,希望大家熟讀。第二章描述了固件庫的架構(gòu),我們?nèi)绾稳ナ褂霉碳斓牟襟E等。有了第二章的基礎(chǔ),我們就可以借助固件庫寫出自己的代碼了。第四章開始之后,就可以根據(jù)大家的需要來閱讀。實(shí)際上,后續(xù)的章節(jié),都是描述某個(gè)模塊有什么什么函數(shù),每個(gè)函數(shù)如何使用等。
關(guān)于后面的章節(jié),建議對(duì)GPIO庫函數(shù)、中斷部分庫函數(shù)、復(fù)位和時(shí)鐘設(shè)置的庫函數(shù)要比較熟悉,因?yàn)槠綍r(shí)經(jīng)常會(huì)用到。
以上提到的這兩個(gè)文檔,已經(jīng)足夠您看的了,呵呵。希望您能從中獲取大量的STM32基礎(chǔ)知識(shí)。
3.2 30天上手STM32計(jì)劃
(1)這里所謂的“上手”,指的是能理解并掌握一些常用的STM32外設(shè),真正想掌握一款處理器,30天根本說明不了什么問題。只能說,你已經(jīng)入門了。但是,這對(duì)我們初學(xué)者來說已經(jīng)足夠了。
(2)這里所謂的“30天”,根據(jù)每個(gè)人的時(shí)間安排不同而不同。
如果您每天有充足的時(shí)間學(xué)習(xí),那么可以規(guī)定自己盡快地能獨(dú)立地進(jìn)行簡單的STM32開發(fā)。如果您每天只有業(yè)余時(shí)間來學(xué)習(xí)STM32,建議根據(jù)您的具體情況安排時(shí)間。畢竟計(jì)劃時(shí)間如果安排太緊,反而收不到良好的效果,只能進(jìn)入惡性循環(huán),這是我們要避免的。
但是建議,不管您有無充足的時(shí)間,都必須給自己做一個(gè)計(jì)劃!
我這里列出一個(gè)思路,僅供參考:
步驟一,安裝完STM32學(xué)習(xí)的軟件,比如J-Link、KeilforARM(MDK)、ISP(如果需要從串口下載的話)。這些軟件安裝的詳細(xì)步驟,可以參考我們推出的相應(yīng)教程進(jìn)行。
步驟二,挑選部分例程的HEX,比如LED燈的例程HEX文件,下載到STM32開發(fā)板中,觀察LED燈的閃爍情況。這部分的操作,可以參考我們推出的相應(yīng)的教程進(jìn)行。
實(shí)際上,以上兩個(gè)步驟,是為了熟悉要使用的工具軟件而已。屬于找感覺的階段。其實(shí)我們還沒開始STM32的學(xué)習(xí)呢!
步驟三,準(zhǔn)備幾個(gè)常用的文檔,比如《STM32的用戶手冊》,《STM32固件庫使用手冊》等文檔。用于平時(shí)查閱。這些文檔,在光盤中的芯片手冊目錄中均可找到。
步驟四,開始查看例程的編寫,看看例程是如何寫的,自己可否修改下例程,達(dá)到自己想要的效果呢?芯達(dá)STM32開發(fā)板的光盤中為大家提供了豐富的例程代碼,可以參考。您一定可以修改出更精彩的例程!
步驟五,Ucos-II的移植,是否需要試一下?
恭喜你,至此,你已經(jīng)可以自如進(jìn)行獨(dú)立的開發(fā)了。最后一步,給自己一個(gè)目標(biāo)(項(xiàng)目),把它實(shí)現(xiàn)出來!
再次強(qiáng)調(diào),以上只是一個(gè)學(xué)習(xí)STM32的思路,供大家參考。下面列出了前面關(guān)鍵的步驟,希望大家能盡快入門。后續(xù)的每個(gè)模塊的編程,請參考我們的芯達(dá)STM32入門系列教程。
3.2.1第1步:熟悉調(diào)試軟件
對(duì)初學(xué)者來說,我們至少需要安裝兩個(gè)軟件:J-Link驅(qū)動(dòng)軟件、MDK(就是原來的Keil)軟件。這兩個(gè)軟件,用《鄉(xiāng)村愛情》里的一句話“必須的!”
如何驗(yàn)證自己已經(jīng)熟悉調(diào)試軟件的操作了呢?很簡單, STM32開發(fā)板光盤里附帶了很多HEX格式的文件,可以選擇一些HEX文件,來觀察運(yùn)行結(jié)果。
比如LED燈的例程HEX文件,下載到芯達(dá)STM32開發(fā)板中,觀察LED燈的閃爍情況。燈在閃爍,就說明你剛才的操作已經(jīng)把HEX文件燒寫到閃存中了。
該步驟要達(dá)到的目標(biāo):熟悉調(diào)試軟件,如燒寫HEX出現(xiàn)問題,可簡單判別問題所在,并獨(dú)立解決。
3.2.2第2步:GPIO編程
這是第一次接觸固件庫的編程,一定要硬著頭皮去了解固件庫。建議大家盡量去用固件庫。而不是避開固件庫自己寫代碼——這樣只能在學(xué)習(xí)中才會(huì)發(fā)生。實(shí)際的項(xiàng)目中,代碼成百上千個(gè),如何一個(gè)一個(gè)自己寫?調(diào)用固件庫中的函數(shù)來完成,才是王者之道。
GPIO本身的編程實(shí)際上很簡單:
1、設(shè)置GPIO口的引腳為輸入或者輸出模式。我們在進(jìn)行點(diǎn)燈代碼的時(shí)候,一般設(shè)置為推挽輸出模式。
2、操作寄存器,往寄存器里置1或者清零操作——這個(gè)步驟,固件庫已經(jīng)提供了專門的GPIO_SetBits函數(shù)和GPIO_ResetBits函數(shù),我們只要去調(diào)用即可實(shí)現(xiàn)對(duì)IO口的置1和清零。
3、實(shí)現(xiàn)多種花樣的LED閃動(dòng),使得自己熟悉GPIO的編程過程。但是在調(diào)用固件庫的時(shí)候,我們還需要有GPIO結(jié)構(gòu)聲明,結(jié)構(gòu)成員初始化,系統(tǒng)時(shí)鐘配置等等注意事項(xiàng)。該步驟要達(dá)到的目標(biāo):熟悉調(diào)試軟件,如燒寫HEX出現(xiàn)問題,可簡單判別問題所在,并獨(dú)立解決。
3.2.3開始全新的STM32深入研究
經(jīng)過以上調(diào)試軟件的熟悉和GPIO口的編程調(diào)試后,相信您已經(jīng)對(duì)STM32有一定的了解。至少知道如何利用STM32的固件庫去寫一個(gè)代碼。OK,下面我們將開始全新的STM32深入研究。在這個(gè)階段,將要接觸到串口編程、TFT液晶屏驅(qū)動(dòng)編程、定時(shí)器編程、串行外設(shè)接口SPI編程、存儲(chǔ)器編程、SD卡與文件系統(tǒng)移植、USB讀寫、UCOS移植等,有精力還可以研究其他外設(shè)。
-
單片機(jī)
+關(guān)注
關(guān)注
6037文章
44558瀏覽量
635403 -
STM32
+關(guān)注
關(guān)注
2270文章
10900瀏覽量
356091
原文標(biāo)題:想轉(zhuǎn)學(xué)STM32?看這里,有你需要的高手入門總結(jié)+學(xué)習(xí)步驟
文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論