嵌入式搬磚道路上的大三狗一枚,撐死算個初學者吧。才學有限,下面僅僅是本人對STM32學習的一點心得與建議,希望對題主有幫助吧。

  心得:本人當初學習STM32的時候有一些跟風的因素,自以為學的晶元越多就越厲害 =_=、 其實,學習嵌入式重要的是整體的工程思想和項目經驗積累,說到底這些晶元,我感覺學習起來都差不多吧,無非就是對內資源(寄存器、中斷、定時器、串口等等),和對各種外設的操作而已,掛載的外設越多,系統會越複雜,這時可能會用上操作系統,同時,如果工程中涉及到各種演算法、自動控制、採樣、濾波等實際問題的時候,不僅會上操作系統,而且還對數學、物理、電路等方面知識要有較強的功底,對編程的能力的要求會更高,此時就要求對STM32的各種資源有比較明晰的瞭解了。

  回到問題,題主問:如何系統的學習STM32?(這個問題,,,講句實話,以本人的水平,真的不敢強答 =_=,才學有限,僅僅提幾點建議吧)建議:

  1、要動手實踐,要動手實踐,要動手實踐!下面有位答主也提到了,工科類的東西光看是不夠的!演算法如何實現,自己獨立設計再動手去敲一敲就知道了;外設如何驅動,找到晶元手冊,照著時序圖自己敲一遍;涉及到操作系統部分的內存管理與進程調用,找到源碼仔仔細細研讀幾遍(自己應該寫不出吧 =_=),相信你一定會很有收穫的,可能我這個方法比較笨,但是確實挺實用的,個人覺得。

  2、準備好資料與開發板相信很多人都有這樣的意識吧,學一款晶元首先想到的是買一塊開發板,對的,沒錯!巧婦難為無米之炊嘛,這裡推薦兩本書《C和指針》、《Cortex-M3權威指南》和《STM32庫開發實戰指南》網上都有PDF版本,結合自己的開發板配套的視頻教程(某火的講的就不錯,需要的話私信發給你),先要理解透徹,然後自己獨立去敲一敲,觸類旁通,例子上給出的都不會很難,知識的拓展很重要,就是舉一反三。

  還有,不懂得話就多去各大論壇大神虛心請教,論壇裏有很多經驗帖子值得學習。

  3、庫開發與寄存器開發?現在STM32入門門檻都不高,稍微有點C語言和單片機基礎的都能學,有人說:寄存器操作那麼複雜難懂,那一堆寄存器名字都記不住,,,那寄存器開發是不是就不重要了?顯然不是,我會說大牛與菜鳥的卻別就在這兒?儘管我也很菜。。。

  建議:庫開發為主,看寄存器是為了理解實現的原理,所以寄存器部分不能丟了。有餘力可以深入學習下,這對M3內核的理解很有幫助,以及後面ARM系列晶元的學習都很有幫助。

  4、多做東西。在實際工程項目中去鍛煉能力題主才大一,若對這一塊感興趣的話,可要把51單片機的知識深入透徹地學紮實喲,這是基本功。

  盡量爭取加入實驗室,跟著學校實驗室的老師、學長,學姐,並積極參加校內外組織的各種比賽,如電賽、全國STM32大賽,飛思卡爾智能車,四旋翼等等。一開始不懂沒關係,只要他們不嫌棄你,積極好學、不要怕苦!(在實驗室裏要謙虛、好學、低調啊,切勿裝逼!否則被打臉是很慘的,別問我怎麼知道的 =_=........),有條件的話,可以組建團體去接外面的項目,當然要經過老師同意,或者代做畢業設計也是條財路 【 手動斜眼】

  5、勤總結,有整體思想。形成自己的總結文檔、代碼風格可能很多人都沒有這個習慣,包括當初本人自己,拿到一個課題或者項目的時候,大概寫一下流程,就開幹,途中遇到很多問題,程序改了又改,從v1.0改到v10.0都還有BUG,,,究根到底,還是自己學得不夠透徹不夠紮實,沒有一個整體的概念,知識零散雜亂,不成體系。有時候,程序框架、流程都沒有錯,就因為時鐘PLL配置上的衝突,導致一個禮拜BUG找不出來,,,所以,形成良好的編程習慣、勤寫注釋、善於總結真的很重要!最好能形成文檔,這絕對是最好的經驗積累形式!

  暫時就寫這麼多吧,本人才疏學淺,如有不對之處望大神斧正

下邊是一些資料

- 概念這麼多,我該如何學 -

- 釋放潛能:學習效率提升、編程能力提升主題班會 -

- STM32 USART串口的應用 -

推薦閱讀:

相關文章