有朋友問:我學習過51,接下來我是先學習STM8,還是STM32呢?
1寫在前面
想要明白這個問題,其實就需要明白STM8和STM32之間有些什么差異,包括MCU基本信息、開發難度、以及應用場景等。
站在客觀的角度來說,STM8比STM32學起來更容易,C語言功底還不錯的朋友,直接上STM32也不是問題。
從大的方向來說,當你對一種MCU掌握的比較透徹,再學其他型號、其他廠商的MCU,相對來說,上手都要容易的多。
針對本文問題,我下面講述一下相關知識。
2
STM8和STM32內核差異
STM8 CPU 是一種專有架構,它保持了以前的 ST7 內核的傳統,同時在 8 位 CPU 效率和代碼密度方面實現了突破。
STM32 圍繞行業標準 ARM? Cortex-M 32 位內核構建,并受益于與 ARM 處理器有關的開發工具和軟件解決方案的完整生態產業環境。
盡管它們被認為是兩種完全不同的處理器,但它們在架構方面實際有許多相似之處。
下面對比STM8S 和 STM32F1 (Cortex-M3)這兩種內核差異:
兩種內核均基于哈佛架構,它們采用 3 級流水線執行,可將執行時間降至最低,對于 STM8S,時鐘速度高達 24 MHz,對于 STM32F1系列,時鐘速度高達 72 MHz。
在代碼密度方面,它們均有優異的表現,這歸功于 STM8S 系列的 8 位CISC 指令集以及 STM32F1系列的 Cortex 內核引入的 16 位Thumb-2 模式。
3
片上外設差異
ST 8位和 32位 MCU 產品線之間的片上外設具有一致性,大多數基本 MCU 外設均定義和構建為可從一個產品系列移植到另一個產品系列。
這通過將 8 位外設簡單但有效地修改為 32 位字來實現。這樣做的好處是可節約成本和功耗,并且資源易于了解。
如果需要更高性能,可在系統層面通過更寬的總線和 DMA 控制器對資源加以補充。在了解了外設的工作原理后,可以將外設應用到 STM8S 和 STM32 系列,從而加速兩種器件之間的轉換。
ARM 處理器和外設符合 AMBA 總線規范,采用 32 位數據總線,而 STM8S 器件使用更為簡單但有效的8 位總線標準。從功能角度看,它們僅在以下方面存在差異:
寄存器大?。?8 位與 16 或 32 位
直接取決于 CPU 運行速度的最大時鐘頻率
DMA,可通過簡單數據管理減輕 CPU 的負荷并提高最大數據吞吐量
一些產品特定功能,如 I/O 端口管理
對比STM8S 和 STM32F1 的 SPI 框圖:
SPI寄存器:
從上面框圖和寄存器可以看出:除了幾個有區別的位和寄存器大小外,寄存器和位的名稱以及在寄存器中的位置都是相似的。
4
系統外設
當今的 MCU 是復雜的 SoC(片上系統),其中不僅包含許多外設,還包含一些高級系統特性,旨在縮減物料清單或增強系統的安全性和穩定性。
1.復位
STM8S 和 STM32 基本具有相同的復位電路,僅有細微的差異:
NRST 引腳既是輸入也是具有內置上拉電阻的開漏輸出。為實現 EMS(電磁敏感度)魯棒性,插入了一個濾波器以避免毛刺傳播到數字電路中。雙向復位有三個優點:
對于多 MCU 系統,雙向復位可確保在啟動或熱復位時所有子處理器均正確同步
對于其它 IC,在系統層面還可以使用 MCU 內嵌的電壓監控器(上電復位和欠壓復位)
當生成假內部復位時,在調試過程中會有很大幫助
2.時鐘
STM8和STM32時鐘都具有很強大的功能,特別是最近推出的STM32G0具有高精度內部時鐘,可以省去外部晶振,減少硬件及PCB。
STM8不具備倍頻功能,各方面相對要弱一點。STM32具有倍頻、外設時鐘分頻等強大功能。同時,STM8和32都具有獨立外設時鐘使能功能,以降低功耗。
看下STM32F1時鐘樹,就大概了解有哪些功能了:
3.存儲器
兩種產品線均基于非易失性存儲器并具有一個選項字節加載器。此機制取代了用于 MCU 上電配置的傳統熔絲位:用戶可以在編程時選擇多種選項,這些選項會隨程序二進制映像一起寫入。
所有新型微控制器都具有以下幾個特性:
暫停、停止或待機模式下的復位:可在 MCU 意外進入低功耗模式時避免發生死鎖情況,適用于不能處理此類配置的應用
硬件/軟件看門狗,可以在復位之后立即通過硬件啟動看門狗
存儲器讀保護,用于防止對程序內容的竊取
存儲器寫保護,用于保護存儲器中包含關鍵代碼的部分。通常,這適用于自舉代碼或IAP(應用內編程)驅動程序
這些選項可自動使能安全性和可靠性特性,這樣即使在 CPU 獲取第一個指令之前出現干擾或攻擊,應用也可以恢復。
STM8S 和 STM32 器件具有嵌入式自舉加載器,通過它可以使用板上串行接口(例如 UART)重新燒寫內部 Flash。隨后可以將任何具有串行通訊接口的 PC 用作編程工具,來燒寫或更新 Flash 以及數據 EEPROM 存儲器的內容。 ST 提供了一個軟件實用程序來執行自舉加載器支持的所有操作。
當然,還有更多系統特性相關的內容,比如安全性、低功耗方面。這些設計都具有高度一致性。
5
軟件
STM8和STM32除了上面描述的一些內容具有高度一致性之外,其實,對應我們軟件開發工程師來說,軟件才是最為關心的一點。
在STM8和STM32產品設計之初,工程師早就考慮過這個問題。因為二者系統、內核及外設都具有一致性,所以軟件庫也是設計具有一致性。
1.寄存器、庫開發
這個我就不說了,從51過來的都知道,對于寄存器比較少的MCU來說,不是問題。對于STM8來說,其實我覺得還好,使用寄存器開發,就是需要更多時間了解寄存器。
我其實不是很建議大家使用寄存器開發,現在STM8有標準外設庫,庫的API函數接口也容易理解,直接拿來省事,也能方便理解寄存器。
那么對于STM32這種有大量寄存器的MCU,我同樣也是不建議大家直接使用寄存器開發,部分功能可以針對庫優化成寄存器。
2.STM8、32CubeMX工具
STM8CubeMX和STM32CubeMX這兩個工具我不止一次在公眾號提到,ST官方的目前的趨勢就是希望用戶使用這個工具來開發。
而且,大家已經發現,STM32有些新出來的MCU是沒有標準外設庫了。所以,這兩個工具建議大家也要學習。
STM8CubeMX目前更新至V1.3.0,只能提供配置,方便了解MCU使用資源情況,還不具備自動生成代碼功能,不過我覺得后面應該具有這個功能。
所以:如果基礎不怎么好,建議先STM8,等學到一定基礎可以再學STM32。如果自認基礎還可以,C語言也行,那么直接上STM32不成問題。
-
控制器
+關注
關注
112文章
16332瀏覽量
177812 -
cpu
+關注
關注
68文章
10854瀏覽量
211587 -
STM32
+關注
關注
2270文章
10895瀏覽量
355744
原文標題:STM8和STM32先學誰,進來看答案吧!
文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論