之前無際在網上看了一些老工程師給初學者的一些建議。
其中一個(ge) 就是新手可不可以直接跳過51單片機學習(xi) STM32。
很多無知的老鳥教唆初學者說51已經過時了,建議直接學STM32單片機。
如果新手信了他的邪,能學會(hui) 才怪!
當他說出51過時的時候,我就知道這個(ge) 人是個(ge) 外行。
所以在信息爆炸的時代,如何學會(hui) 去甄別哪些是對的,哪些是錯的特別重要,方向不對毀一生!
創客海社區一直提倡初學者從(cong) 51開始學習(xi) ,目的在於(yu) 讓大家能對單片機的原理有一個(ge) 深入的理解。51和STM32僅(jin) 僅(jin) 是單片機選型的性能上的區別,並不代表了技術水平和能力。
51單片機是通過C語言或者匯編語言配置寄存器來控製外設,實際上目前大多數單片機都是這樣做的,區別就是寄存器不一樣,51單片機內(nei) 的寄存器數量非常少,比較容易入手。
STM32單片機可以通過C語言來配置寄存器來控製外設,但是STM32實際上有數千個(ge) 左右的寄存器,如果用51單片機的學習(xi) 方式會(hui) 效率非常低下。所以要用到庫函數這種直接調用的黑盒式編程方式,而無需了解深層原理。
單片機的領域是相通的,當我們(men) 懂了其中一種以後,其他的都是大同小異。但是51單片機更多的是學會(hui) 了單片機內(nei) 層的深層工作原理,可以直觀看到C語言、匯編語言、機器語言的差異,能學到沒有黑盒的知識。如果式有51單片機基礎的學生再應用其它的單片機會(hui) 很得心應手。但是如果上來就學習(xi) STM32,可能不是很好理解單片機的底層原理,對於(yu) 更換其它的單片機有些難度。
一、51和stm32單片機的區別
Intel 8051 單片機
51和stm32的區別還是挺大的,51是屬於(yu) 低端單片機,stm32算是中高端單片機了,他們(men) 麵向的產(chan) 品也不一樣,真要區別,一篇文章遠遠不夠。
這裏隻說對我們(men) 開發息息相關(guan) 的。
1. 內(nei) 核
51是Intel的8051的內(nei) 核架構,而STM32有Cortex-M1/M2/M3/M4/M7/M33這麽(me) 多內(nei) 核版本,像我們(men) 常用的STM32F1係列就是Cortex-M3的內(nei) 核。
2. 資源
51是入門級單片機,各方麵資源都不如stm32,比如說主頻、ROM、RAM、IO口、外設資源。
3. 開發模式不同
51是直接操作寄存器使用外設,而stm32是直接調用庫函數使用外設,相對51開發更加效率。
4. 操作係統
51隻能運行Tiny51微型任務調度操作係統;而stm32可以跑主流的RTOS比如uCOS、FreeRTOS、RTthread、CoOS、Nuttx,但是依然不足以運行Linux操作係統。
5. 後期維護
傳(chuan) 統的51不能通過代碼來自我燒寫(xie) 內(nei) 部固件,需要專(zhuan) 用的下載電路下載整個(ge) 固件。
而STM32可以通過編寫(xie) 自舉(ju) 方式的程序來編輯內(nei) 部下載好了的固件,如果軟件有bug,可以通過更新固件實現,直接升級程序解決(jue) 。
6. 開發環境
51和STM32都可以用Keil或者IAR開發,但是版本不同,比如51是Keil-C51,STM32是MDK-ARM。這是因為(wei) CPU內(nei) 核的指令集不同。
除了Keil、IAR以外的編譯器還有GCC編譯器、可配套的編輯器有Code::Blocks、VScode、eclipse等等。
7. 程序架構
資源很緊張的51單片機,產(chan) 品開發時一般以功能實現為(wei) 主,不會(hui) 考慮程序架構可擴展性和可移植性,因為(wei) ROM和RAM不允許。而STM32有充足的空間做容錯機製。
8. 難易度
STM32雖然是通過庫函數就能把芯片外設用起來,但是學不到最底層的原理,代碼高度封裝。開發難度卻比51難很多,因為(wei) STM32的資源豐(feng) 富,涉及的技術點就多。
所以,兩(liang) 者廠家對芯片的定位不同,51除了偏向低端產(chan) 品以外,開發也更接近底層。
而STM32的定位是幫助工程師快速做出產(chan) 品。
基於(yu) 這些特點,如果你剛開始就直接去STM32的話,會(hui) 有很多基礎知識的缺失。
導致你學起來比較吃力,很多東(dong) 西也掌握不透,在學習(xi) 的過程中會(hui) 很痛苦,覺得這玩意太難了。
一般有51基礎,並且做過一些小項目,學習(xi) STM32會(hui) 快很多。也不用係統地把所有外設都學習(xi) 一遍,最好的方法就是通過項目去學習(xi) ,項目用到什麽(me) 外設,就相應去看這個(ge) 外設怎麽(me) 開起來。
基本上一個(ge) 項目下來,你就能掌握STM32了,其實歸根到底就是把它當做一個(ge) 工具熟悉而已。