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