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