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