前言
前兩天在群里看到群友們在討論學習STM32的話題,并且今天也有一位機械專業的準研究生讀者也問了STM32的入門問題。
正好我也有一點點經驗,所以試著分享一下這個話題。我也不是什么大神,只是一名普通的工程師,以下分享僅僅是自己的一點經驗及看法,僅供參考,希望能對一些初學的朋友有所幫助。老鳥略過~~
找資料
在知乎,我也有看到類似問題:學STM32要買什么書籍、看什么書籍?
STM32編程作為一項實操性很強的技能,所以要多實操。初學的話,我覺得書籍就暫時先不買吧,先考慮入手一塊STM32開發板,然后跟著開發板的教程走。
幾年前,做STM32的教程有很多家:
現在市面上還比較火的基本就只剩前4家了,從這4家中選擇一家買開發板。正好這4家的教程我都基本上都有看過一遍,下面簡單介紹一下它們各自的特點:
1、正點原子
正點原子的教程特點的關鍵詞:手把手。
教程對初學者比較友好。51轉過來的,覺得自己基礎不太好的朋友可以選這個教程,我以前入門也是看了原子哥的視頻入的門。
有個缺點就是:代碼編碼風格不是太好。我現在比較少看他們的代碼,因為看起來不舒服~
2、野火
野火教程特點的關鍵詞:零死角。
野火的教程非常好,適合反反復復地讀,STM32的教程我看得最多的就是野火的了。我覺得無論現在你在用什么教程,最終都有必要再看一下野火的教程。
野火的教程很多知識點剖析得很透徹,真所謂零死角。火哥書里有這樣一句話:基礎不牢,地動山搖。與君共勉~
3、安富萊
安富萊教程特點的關鍵詞:授人以漁。
安富萊的教程是我工作之后看得比較多的,教程在很詳細剖析知識點的同時也在教我們學習的方法。
其實我第一次接觸STM32用的是安富萊的教程,但那個時候看安富萊的代碼令我很難受,當時不明白為什么那些變量命名得那么花里胡哨,所以也就沒用它們的教程。
后來有了一點基礎之后才發現我錯了,這是多么規范的代碼啊!安富萊教程是精品中的精品,適合進階。
安富萊的教程我覺得跟野火的教程基本不分上下,讓我做選擇我也選不出。小孩子才做選擇,我們成年人可以全都學~
但就代碼風格及框架而言,安富萊的代碼風格是最接近實際項目的,我第一份工作的公司的代碼風格基本上就是沿用安富萊的代碼風格,看得很舒服、很有條理。
看這工程有沒有覺得很舒服?除此之外,安富萊對一些調試技巧方面很用心,比如把Jlink的各種調試手段基本都挖掘出來了(可以去看它們的專題教程,很香)。
正點原子有原子哥、野火有火哥,這些都是大佬級的人物(出書狂魔、出教程狂魔)。安富萊也有這樣重量級人物:硬漢哥。
硬漢哥對技術的追求精神很值得我們學習(技術深度+廣度),特別是那一期期安富萊周報,給我們分享了很多新東西、新技術,可以去圍觀它們的公眾號【安富萊電子】。除此之外,硬漢嵌入式論壇由他坐鎮,基本上都是有問必答,并且回答很有耐心,大贊。
這里介紹安富萊的篇幅最長,是想讓大家多多認識一下安富萊,因為作為STM32教程的三巨頭之一,安富萊的用戶好像較前兩家少很多。
(就我了解目前做STM32教程最火、用戶比較多的就只有:正點原子、野火、安富萊這三家。不知道還有沒有其它我不知道的,所以這里暫且稱它們為STM32教程三巨頭)
好的教程應該是要讓更多的人看到的,讓更多的人支持,這樣這些大佬才有能量創造更多的教程來供我們學習。
上面那張圖列舉了那么多教程,其實有些還是挺不錯的,不知道為什么現在基本都看到了。比如:
眾想科技,當時我覺得那應該是從51轉到STM32最好的入門資料,教程的編碼習慣跟我們學51時的編程習慣差不多,關鍵是那位老師現場敲代碼,一個一個字母地敲,包括STM32的固件庫函數,當時MDK還沒有補齊功能,當時很是佩服。
以為它會發展得很好,但是現在基本上都沒聽說過眾想科技了。(估計是它的教程收費的原因,基礎教程免費,提高教程收費)
4、普中科技
普中科技特點:開發板便宜、開發板便宜、開發板便宜。實在買不起上面三家的開發板的可以選擇這個。
一百八還帶屏幕,太香了。我大學時買了一塊,現在還有留著。其它沒啥說的,它有的上面三家都有。
5、其它
這里順便介紹一個B站的教程:
https://space.bilibili.com/203095676/
這是恩師的B站視頻教程,目前有幾個專欄:STM32入門編程、RT-Thread、硬件電路講解、大雜燴。
感興趣的朋友可以去圍觀學習。
6、總結
幾個教程的特點:
正點原子、野火:用戶較多,論壇熱鬧。
安富萊:代碼規范、代碼框架比較接近實際工程項目,當然論壇也挺熱鬧。
普中科技:板子便宜。
上面也大概分析了各個教程的特點,自己根據自己的情況(基礎、money等)選其中一個板子,跟著教程走就可以了。其實,入門了之后,每一家的代碼都可以用的,只需稍微修改一下。
推薦:這幾家的開發板都有面積大的、面積小的。大小就是開發板主控外圍搭的一些硬件電路多不多,你能做的實驗多不多。建議買個不大不小的,功能稍微多一點的,因為作為初學者,大概都比較喜歡玩一些比較直觀的實驗。
買個帶屏的,把自己對象的照片顯示到屏上去,這夠直觀、可以足夠激發自己的學習興趣了吧
當然大板子有的功能小板子也可以有,但是得用跳線連接一些模塊,怕到時候是因為線接不對又不會排查,導致實驗結果出不來,很容易就給勸退了~
看視頻還是看書?
如果對STM32沒有概念,可以先看幾節視頻了解了解。有大概了解之后就可以直接看書了,畢竟看視頻比較花時間,而且效果不太好。
當然有些朋友可能比較喜歡看視頻,那也可以,但是要有做筆記的習慣,好記性不如爛筆頭,不然你突然忘記了視頻講的某個知識,想要復習的話你就得去翻視頻,很耗時間。
我是比較喜歡看書的,可以做筆記、涂涂畫畫。無論如何,都要培養看書的習慣,逼自己看書,最終要進行提高,都是要回歸到書本上去。
用寄存器還是庫函數?
STM32有兩種編程方式,一種是用寄存器的方式,另一種是庫函數的方式。對于初學者而言,可能后者較容易上手。
學從難處學,用從易處用。學習階段,能學多深就盡量學多深,這樣基礎會打得比較牢。
不只是為了學STM32而學STM32,我們的目標是:學完STM32,換另一款芯片也能很快上手。基礎有多牢固,換另一款芯片上手就有多快。
現在STM32有好幾種庫函數,也有一些輔助工具如STM32CubeMX這種工具,這種是讓熟手用的,新手就先暫時先別去碰這種了,因為這些工具給我們屏蔽了太多東西了,不利于我們的學習。
下面是群友分享的網上關于STM32CubeMX與HAL的一些觀點,我也比較贊同。
雖然很多人都推薦只學庫函數,但是我覺得在掌握庫函數的同時也是很有必要學習一下寄存器的操作方式,因為以后有可能會遇到直接操控寄存器的情況,比如之后進行Linux驅動的學習。
庫函數其實就是對寄存器操作的封裝,對寄存器的操作也不難,就是一些位操作
不用全都學
那些開發板的教程多則上千頁,少則幾百頁/幾十個章節:
不用全都學,不然等你學完后面基本就會忘記前面。學一些基本的、通用的、常用的外設:GPIO輸入輸出(點燈、按鍵)、EXIT、TIMER、UART、I2C、SPI、ADC、DAC等,當然還有其它的。
這些用得多,先把這些給學了,相信到時候學完了你也有自己的思考了知道該學什么了。等我們入門之后,要用什么再去學什么完全來得及,關鍵是我們得在平時的學習過程中培養這種能力。
學以致用。在學的過程中,可以嘗試著diy一些東西、做一些小作品,實在不知道做什么的話論壇逛一逛,一堆好玩的東西。跟著別的人的教程來做,能做出來也是一種能力。
不要以為別人的教程寫得很簡單,實際自己去做的時候才知道會遇到什么困難。在解決困難中成長,那才記憶深刻。
其他
以前我剛開始學STM32的時候忽略了很重要一點:閱讀參考手冊。導致很多東西都沒有理解。
所以建議:多看手冊、多看手冊、多看手冊,很多你在看教程看不明白的知識可能可以在參考手冊里找到解釋。
51單片機推薦書籍
看到后臺有一些留言51單片機的,估計正在學51的讀者也不少。而本公眾號應該不大會分享51相關的知識,因為我工作用不上 ,而且我現在對51單片機也不熟。
所以這里順帶推薦兩本51單片機的書籍:
宋雪松老師的《手把手教你學 51 單片機-C 語言版》
郭天祥老師的《新概念51單片機C語言教程.入門、提高、開發》
兩本書都很贊,不僅僅很詳細的講解了51單片機的知識,而且拓展了很多很有用的知識。
總結
寫了一堆,完全是想到什么寫什么,可能有點亂,還是希望可以對一些朋友有幫助。下面小結一下:
學51/STM32:買開發板,跟著教程學。
學從難處學,用從易處用。
基礎不牢,地動山搖。
-
STM32
+關注
關注
2272文章
10923瀏覽量
357299
原文標題:學習STM32的一些經驗分享
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論