沒有51基礎,能不能學好STM32?

時間 2021-05-30 14:25:10

1樓:97年大麻雷

可以的,本人就是做STM32專案,在一家很小眾公司上班,沒有學過51,至於怎麼學,個人認為不學51的路線是:

數電/模電->STM32官方手冊->STM32庫函式手冊

其實你看懂STM32的原理圖就大體入門了,知道有幾個中斷,定時器,DMA,引腳定義,暫存器基本可以了。具體專案用的庫函式比較多,暫存器貌似很少,因為STM32的韌體版本市場要求就是快速迭代,用暫存器開發周期非常長,維護性較差,現在的ST公司把暫存器封裝的很好,開發者不必考慮過多細節,學起來也輕鬆,能著重於點上。

但是一些協議必須要熟悉,USART I2C SPI 這些匯流排協議必須熟悉,不然就別說咱是搞微控制器的。。還有就是C語言(推薦C和指標這本書),只要精通語法就可以了,和一些常用資料結構,演算法。

記憶體也必須熟悉,C語言玩的就是記憶體,少用malloc()。畢竟沒有MMU的MCU管理記憶體還是有不足。

嵌入式實時系統也得了解

至於暫存器,個人認為那是學校比賽用的多,真正的實戰專案幾乎沒有

2樓:XinLiZH

有沒有51的基礎,跟能不能學會stm32沒有直接關係,他倆只不過是兩種開發平台而已,就跟mfc和qt是開發gui的兩種框架一樣,只能說學會一種微控制器之後再學其他的會比較容易而已。

3樓:當星星划落

說直白點就是擺積木,你只要把那些功能模組都乙個個,弄懂原理,弄懂實現過程,搭起來,不塌,就沒問題了。跟這個積木是用什麼材料做的沒關係,只是搭的方式不同罷了!

4樓:西漂

我覺得51的基礎還是蠻有用的。

在下目前大二,也是在學STM32,之前大一階段我做了將近一年的51微控制器(主要是沒時間學STM32),從IO口外設到小專案什麼的都做過,往自己臉上貼金的講算是小有所成,現在因為在做乙個智慧型家居的專案玩,資料處理51做不了了才看的STM32,從51過渡到STM32感覺相當平穩(使用庫函式開發)。有了51的基礎,學STM32也有個對比,從IO到外設,STM32與51微控制器的東西一對比感覺還是挺好理解的。

至於題主說的專案開發問題,一切專案都是簡單的IO操作和外設操作堆起來的,自己想乙個,或是找乙個,堅持做下去,做完就什麼都會了。

至於女生行不行的問題......在下大學裡男女比例雖然是7:1,妹子們都是各種大神。所以應該跟性別沒多大關係吧.

5樓:meepo

能,但會比較困難,不推薦這麼幹。

51比較簡單,適合入門,而且其實並不會浪費時間,學51再學stm32,我覺得會比直接學stm32還要快。

6樓:陳蔚青

今年剛畢業,看到這個問題非常親切,頓時有很多話想說。逐一看完了前面的答案,覺得講得都很有見解,但卻不夠明晰。考慮到題主才學微控制器,我來嘗試用更「使用者友好」的方式回答一下

先放出我的答案—— 很難學好。

先談談學習方法

我們通常準備攻讀一本大部頭教材或者高深書籍的時候,都是用「啃書」這個詞,莫過於此。啃教材也好零基礎死磕微控制器也好,相似之處在於密集的資訊量。而人的大腦的快取是一定的,資訊量過大——即大腦中同時裝著太多不能解決的概念(且稱作懸念)快取就會爆掉。

所以學這種東西的最好途徑就是壓縮資訊量,如同俗話說的「把書讀薄」。

在說說51

51這個東西,雖然以現在的眼光看有點「簡陋」而顯得過時,但麻雀雖小五臟俱全。串列埠定時器這種常見的外設都有。還有乙個上一段落裡面很需要的優點,就是簡單

首先是從外設種類上就少很多,還有就是同一種外設的操作,暫存器也少很多。

說到學微控制器,入門的時候都是學外設。我認為學外設粗分可以分成兩步,1)外設的原理,2)外設的操作。51的外設的基本功能原理與STM32是共通的,51的外設學會,對應的STM32外設的主要部分的原理你也就理解了。

綜上所述,學習51其實是自動幫我們壓縮了資訊量,精簡下來了最關鍵的部分。而直接學習STM32的話學習曲線太陡,就像題主一樣,一般人很難「磕」下去

所以我認為以學習51入門反而是一條捷徑。

主要問題回答完了,下面說說閒話

關於學習外設的操作。外設的操作不同的廠家的同一種外設,肯定不同;甚至有些時候,同一廠家的不同型號也是不同的。在真正第一次寫的時候,都是通過查手冊來程式設計序的,這種易變的東西注定不是精髓,真正有含金量的知識是那些「不會變」的東西。

當然外設的操作裡「不變」的東西,其實是學會閱讀文件

樓上有人提學習《微機原理》,我認為是不正確的。據我了解很多學校的微機原理都是16位8086,這個東西首先——難,指令有100多條,定址更複雜不說,關鍵還是諾依曼結構跟微控制器常見的哈佛結構兩個概念,所以學習價值也不大。這門課本來就是跟計算機專業開設的,因為PC都是這樣的X86結構嘛。

有少部分學校開的是8080也就是51的彙編了。這個從我個人經歷來講,我覺得從C語言開始入門更容易些。當剛開始學的同學連微控制器是個啥都沒有乙個概念的時候,就開始來整程式關鍵字什麼什麼的,設中斷向量設堆疊什麼什麼的,對人的耐心和毅力是個極大的殺傷。

畢竟我們不是來接受革命忠誠度考驗的,是吧。我覺得在這裡選擇成本低的方法是更機智的。

題主提到了女生學微控制器的問題,誠如樓上有人說的那樣,這只是男女的興趣差異而已。男生對電子產品感興趣的更多一些,所以這個行業男生佔了一大半。不過這並不妨礙女生的發展,就以我目前搬磚的這個地方,研發部門就有女性領導,PS職位是「總監」,不過我總有一種叫理髮師的感覺:

-P。題主說得對,微控制器是以實踐為主,不過不代表不需要學術。這得等題主東西做多了以後自有體會,工程/實踐背後都是由學術做支撐的,學術方面的薄弱會對在工程實踐中產生不小的障礙。PS似乎微控制器的行業裡有不少「神話」,諸如某某研究生薪資尚不如(或只高一點)某某本科生之類的,我相信這只是個例,即便真是這個情況,本科生的天花板也比研究生矮很多。

所以我堅信多讀書還是有好處的,這決定了你在事業上的「續航能力」。

以上都是個人的觀感,注定有很多偏頗的地方,供拋磚引玉吧。

其實身邊的同學甚至老師,也都是站在自己的角度發表自己的觀感,誰又能保證對你來說的絕對正確呢,這事兒唯有自己不斷的思考和總結,信自己比信誰都強

7樓:STM32

題主應該先看本C語言教程,比如《C Primer Plus》,然後就可以看的懂STM32的庫函式了。

然後對著STM32的Reference Manual看庫函式的例程,看完之後自己改改例程試試,改改串列埠波特率啊,定時器中斷時間啊,PWM占空比啊,ADC取樣時間啊之類的。

等看完所有例程之後把它們綜合起來做個小專案試試,應該就對前面的例程有所體會了。

我是覺得學習51的目的是為了對微控制器體系結構有所認識,但是不一定非要抓著51不放啊。關於STM32所採用的ARM Cortex-M系列架構,《ARM Cortex-M3權威指南》寫的就挺好的。當然還有它的哥哥《ARM Cortex-M3 & M4權威指南》和它的弟弟《ARM Cortex-M0權威指南》。

題主要是對底層細節有興趣的話可以看看。

順帶說一句,以前微控制器老師天天誇答主的Ex微控制器學的好,所以女孩子還是可以很厲害的,加油啊。

8樓:DZ LI

題主是要參加山東區電賽吧,沒51基礎學STM32確實有點難。可以參與專案的硬體電路設計部分。

那些說51落伍的都是學過51的,建議從51開始學。

9樓:

首先是結構,其次才是程式設計

直接上來寫程式,和盲人摸象差不多吧

弄清楚晶元上有些什麼,能幹什麼,怎麼幹

不用急,暫時做不出來東西都沒什麼,很多專業都是學習的時候做不出來實際東西的,還不是好好的嗎。

靜水流深

10樓:瘋狂的蔬菜

在不久之前我也曾被和題主相似的問題困擾,因此不請自來。

其實很多人如果不學51根本就搞不懂暫存器匯流排ALU之類的硬體概念,甚至學了51、學會了寫個中斷定時器什麼的也是糊里糊塗的。如果連在51上面用暫存器操作IO口背後發生了什麼都不清楚的話,那麼你看到stm32的IO口操作的時候心裡面一定會有無數草泥馬飛奔而過的。所以學習MCU一類的東西必須先從微機原理和51開始。

stm32的確比51先進多了,但是你看學高數也得從微積分先學起吧,總不能因為微積分已經被擼了百來年就覺得是被玩壞的沒有學的必要了吧。回到stm32上面,這裡面其實有個知識鏈。

計算機基礎 -> 微機原理(+數電,如果搞外圍還要模電)-> 51 -> ARM 的 stm32

各種「由入門到精通」的how-to書都有乙個很大的問題都是因為它們不會專門地解釋各種專業名詞和概念,有的甚至堂而皇之地建議讀者「看不懂可以先跳過」,給人一種只要抱著這本書就可以獨孤求敗天下無敵的幻覺,這是非常不負責任的。因此看不懂stm32那些資料是大都是因為不懂資料裡面的各種專業名詞,所以最好的學習方法就是從左邊開始一步一步向右邊的目標靠近。其實認真啃完微機原理並不用很久,在51上面用彙編寫些小程式可以很好地幫助理解微機原理裡面的那些概念了。

當啃完微機原理和51後,對微控制器的核心和外圍電路有了比較清晰的框架以後,再看stm32,就豁然開朗了。(在這裡要感謝 @陳俊直和 @Kaiser Li兩位前輩之前的指導)

補充一下,微機原理裡面一些為了支援高階硬體而採用的特殊方法,比如面向大記憶體的分段管理,MMU,DMA之類的概念,可以先略過。對於多如牛毛的彙編指令,看程式的時候重在理解其中的思路。個人認為除非對計算機體系結構有興趣,就不必深究了,一般的MCU專案都應該用不到這麼多而複雜的外設。

11樓:

瀉藥。就像學數學,有的人自己都玩到微積分了,當然想當然地說加減太簡單了,我教你直接學乘除開始吧……

專業基礎還是要學的。特別你說那些名詞都不懂的時候。我在想你是不是連微機原理都沒學到呢。

就像之前有個人問我問題,最後發現他連RAM和FLASH的作用區別都不知道。還怎麼學下去啊就,所以我建議他先學微機原理再學51或其他的8位微控制器,再來學32位的ARM。雖然微機原理的8086更加古老,但學現代處理器架構的思路還是要從微機原理開始。

欲速則不達。我不知道你的前置知識有多少,但剛上完大二就整這個確實不妥。

最後,我有幾個師妹技術水平還是不錯的,主要還是考動手練。

數學不好能不能學好生物

kcarrie 如果是初高中時期,數學好不好其實和生物沒有多大關係,因為這時候生物偏文科,只要勤奮一點,多看看多記記課本,加強對概念的理解基本就可以學好生物了。不過如果想深入學生物的話,你會發現生物的理科性開始變強了,這時數學的思維對生物的學習還是大有幫助的。 Nlover.Spring 看你學生物...

如果我語法幾乎零基礎,究竟能不能學好專業的英語?

smile 我現在和你的情況一樣,我下個月就要考試了,語法零基礎,詞彙量也一般般,這個月專門學英語了。還有乙個難點就是日語也要考,日語只學了一學期而已! 從英語本土幼兒讀物開始看,最好自己覺得有趣味的,才可能長期堅持下去。書上怎麼說,學會同樣去用就行了,一點點增加難度,帶著問題去看,精讀進去,如果合...

能不能用arduino語言寫51微控制器程式?

田偉良 雖然願望非常好但不可能的啦,就算arduino官方支援,乙個bootloader就佔距了89c52的全部空間,89c51的空間連bootloader都裝不下。更別提寫程式了。用keil的話89c51寫幾頁就裝不下了。arduino ide寫的程式編譯後可是要比keil大的多哦。 奧芯軟體方案...