單片機的學習者有初入職場的菜鳥工程師,有渴求知識的在校大學生,也有迫于項目需求的電子工程師。迫于項目需求轉換開發(fā)平臺的電子工程師往往具備其他類型單片機的使用經驗,學習新類型的單片機并不會有太大的障礙,但是菜鳥工程師和在校大學生就是真正的“初學者”。初學者在開始學習單片機的時候都有一個相同的問題那就是“怎么才能盡快地學會使用單片機?”
菜鳥工程師由于身邊有“老兵”的指導,加之有目的明確的工程項目的驅動,在單片機學習上并不會走太多的彎路。在校大學生在學習之初,首先要面對的就是“迷茫”,空有一腔熱情,卻不知如何下手。
在學習單片機之初應當有一些基礎知識準備。單片機是電子技術發(fā)展到一定程度才出現的產物,本身就是眾多電子技術的結晶,對其中一些知識的了解是學習單片機所必需的,所以網絡上經常出現的“零基礎”學習單片機是不客觀的說法。在學習單片機之初,應該具備基礎的電路知識,主要包括基本的數字電路和模擬電路知識。比如,在學習單片機的i/o口時,就會涉及數字電路知識中i/o口電平、施密特觸發(fā)器等內容;在學習單片機的adc通道時肯定會涉及信號帶寬等模擬電路方面的內容。在學習單片機之前不苛求必須有深厚的電路功底,但是常識性的電路知識是不可或缺的。
學習單片機的很大一部分工作是學習單片機的編程,簡單地講就是編寫代碼控制單片機的工作流程。目前,絕大部分的單片機開發(fā)工具都能夠支持c語言,并作為單片機的開發(fā)語言,也有人推崇使用匯編語言作為單片機的開發(fā)語言。不可否認使用匯編語言可以獲得更高的執(zhí)行效率和代碼密度,但是匯編語言在開發(fā)效率和代碼的可讀性上比c語言要差。事實上,c語言編譯器效率已經提高到了相當高的水平了,c語言編寫的代碼編譯后在執(zhí)行效率和代碼密度上跟匯編語言相比并沒有太大的差距,c語言早就成為單片機開發(fā)的絕對主力。所以初學者掌握基本的c語言知識即可,無須在開發(fā)語言的抉擇上花費太多的時間。
準備的最后一點就是學會使用最基本的實驗設備,這里列舉一般的實驗室都能提供的4種設備:萬用表、穩(wěn)壓電源、示波器和信號發(fā)生器。這些設備的熟練使用將對學習中遇到的調試(bebug)有非常大的幫助。
有了以上的準備,就可以正式開始單片機的學習了。初學者最好選用一款性能穩(wěn)定,范例豐富并且推廣較好的單片機作為學習目標。性能穩(wěn)定,避免在學習過程中遇到由于芯片本身的設計失當導致的一些無法解決的問題;范例豐富,大量的示例供用戶閱讀和借鑒,更容易理解單片機的操作機理;推廣較好,意味著學習的受眾面較廣,有很好的學習氛圍和學習資料,并且有容易獲得的學習開發(fā)板。從這3點出發(fā),msp430系列單片機就是一個很好的選擇。
首先,該單片機目前在電子行業(yè)已經使用多年,一直都作為低功耗單片機的標桿產品;其次,該單片機所有的型號都具備官方范例代碼,而且有較多的參考案例;最后,msp430單片機在中國通過大學計劃推廣了多年,大量的大學生使用這款單片機完成實驗、參加競賽,積累了很多的書籍教材和網絡資料,開發(fā)板類型也很豐富,ti提供售價約為幾十元人民幣的launchpad開發(fā)板。單片機都有相似性,學會使用一款單片機,再過渡到另一款就不太困難了。
學習單片機可以從學習單片機的開發(fā)環(huán)境開始,當前的單片機都有自己對應的集成開發(fā)環(huán)境(ide,integrated development environment),并有免費版本供初學者下載使用。集成開發(fā)環(huán)境可以完成代碼的編輯、編譯和調試過程,使用起來比較方便。ti推出的ccs5還可以完成msp430單片機的圖形化配置。對于初學者,集成開發(fā)環(huán)境的基本使用沒有障礙,但是特別要注意的是開發(fā)環(huán)境中對應的開發(fā)工程的屬性配置。
熟悉開發(fā)環(huán)境的開發(fā)流程后,就可按照引導教材或者用戶手冊,逐一了解單片機的各功能模塊的特性并完成對應的功能模塊的實驗操作。逐個模塊熟悉下來,基本上一款單片機即可學會使用。這樣一個流程下來,能夠掌握單片機的基本操作。希望熟練掌握則需要進一步通過完成更為復雜的實驗或者項目來鍛煉。
前面的介紹中也強調了實驗的重要性,實際上大多數學習單片機的初學者都會陷入一個誤區(qū),過度的重視實驗,把絕大部分精力放在調試上,卻忽視了單片機使用原理的學習。這種情況在大學生身上非常明顯,很多情況下還沒有能夠理解單片機功能模塊或者外設的使用原理和方法,就急切的展開實驗。大多數情況下,編寫的代碼還存在缺陷甚至錯誤,無法達到預期的效果,就進入到了無盡的盲目修改和調試中。最典型的情況就是剛開始接觸一個外設,連工作方式和寄存器的功能還沒有弄清楚,就開始粘貼示例代碼,并編譯下載。反復調試不能成功,心態(tài)就開始變的浮躁,進而厭惡單片機。
如果一直調試未果,學習熱情被消耗殆盡,對單片機的使用產生恐懼感,最終就會放棄單片機的學習。細究這種情況的原因,其實就是急功近利的心態(tài)在作祟。初學者都急切的希望自己的代碼可以跑起來,所以重心就從“學”偏移到了單純的“做”上。這種心態(tài)我要特別提出來,希望能夠告誡初學者必須保持平穩(wěn)的心態(tài),先仔細地瀏覽教材或者用戶手冊,理解工作原理,之后再調試代碼完成實驗。
單片機學習過程中每個人都會遇到各種各樣的難題并且遭遇長時間的調試過程。遭遇到這樣的情況,就需要冷靜下來查找問題成因。一方面,可以借助于網絡,查找是否有相似的問題并借鑒其他人的分析及解決方案,這是一個比較直接高效的方法;另一方面,反復地查閱單片機的數據手冊或者用戶手冊,逐個分析列舉可能的原理,并設置對應的測試來解決,一些“莫名其妙”的問題,往往需要通過這樣的手段來解決。
當然,能夠獲得有使用經驗的老師或工程師的指導則是最直接、最有效的方法。隨著單片機學習以及使用的深入,遇到的問題將越來越復雜化,這時候外界因為缺乏對此項目的深入了解,所能起到的協(xié)助作用就會減弱,這個時候獨立的定位問題以及解決問題的能力就必須具備。所以在學習的整個過程中,都應該有意識地培養(yǎng)這種能力。
當熟悉單片機的使用之后,就應該完成一個視野轉換的過程。這個時候關注范圍則應該由單片機擴展到整個單片機系統(tǒng)上,不僅僅關心單片機上代碼的實現,還需要考慮如何構建以單片機為核心的電子系統(tǒng)。單片機工程師一般會對一個或者若干個類型的單片機非常熟悉。
在得到工程項目需求時,能夠快速地評估系統(tǒng)所需要的單片機控制核心,在滿足需求的前提下一般會盡量采用最熟悉的單片機,合理設計劃分系統(tǒng)電路功能模塊,盡可能高效利用單片機片上的外設,以達到最優(yōu)化的設計。如果評估發(fā)現使用的單片機不合適,則還需要更換單片機平臺。在工業(yè)應用上,還必須考慮單片機系統(tǒng)所需要面對的嚴苛工作環(huán)境,保證系統(tǒng)能夠順利通過相應工業(yè)標準的測試。最終完成由點到面的擴展,逐步朝單片機工程師方向邁進。