- 基于STM32的嵌入式系統設計與實踐
- 鐘佩思 徐東方 劉梅編著
- 1991字
- 2021-03-12 20:28:36
1.2 STM32微控制器
近年來,STM32微控制器在嵌入式系統中的應用越來越廣泛,熟練掌握基于STM32的嵌入式系統開發與設計具有極為重要的現實意義。
1.2.1 STM32微控制器的誕生
STM32微控制器是指由意法半導體(ST Microelectronics,ST)公司開發的32位閃存微控制器產品,這是ST公司第一個基于ARM Cortex-M內核的微控制器。STM32微控制器具有易于開發、性能高、兼容性好、功耗低、實時處理能力和數字信號處理能力強等優點,它的出現使得當前微控制器的性價比水平提升到了一個新高度。
在過去的數年里,51單片機因其結構簡單、易開發等優點,一直被廣泛使用,是嵌入式系統中一款經典的單片機。如今嵌入式產品的競爭日益激烈,相應地對微控制器性能的要求也越來越高。面對這些新要求和新挑戰,51單片機顯得有些“力不從心”。因此,一款功能更多、功耗更低、實時處理能力和數字信號處理能力更強的微控制器,將會更好地適應當今的市場需求。
正是基于這樣的市場需求,ARM公司率先推出了一款基于ARMv7架構的32位ARM Cortex-M微控制器內核。Cortex-M系列內核支持兩種運行模式,即線程模式(Thread Mode)與處理模式(Handler Mode)。這兩種模式都有各自獨立的堆棧,使得內核更加支持實時操作系統,并且Cortex-M系列內核支持Thumb-2指令集。Thumb-2指令集是專為C/C++編譯器而設計的,因此基于Cortex-M系列內核的微控制器的開發和應用可以在C語言環境中完成。
繼Cortex-M系列內核誕生之后,ST公司積極響應當今嵌入式產品市場的新要求和新挑戰,推出了基于Cortex-M系列內核的STM32微控制器。它具有出色的微控制器內核和完善的系統結構設計,以及易于開發、性能高、兼容性好、功耗低、實時處理能力和數字信號處理能力強等優點,這使得STM32微控制器一上市就迅速占領了中低端微控制器市場。它不僅完美地適應了當前市場的需求,還使得ST公司在低價位和高性能兩條產品主線上取得了巨大進步。
1.2.2 STM32微控制器的分類、命名規則與選型
1. STM32微控制器的分類
為了滿足市場需求,STM32微控制器具有多種產品系列,其內核型號大致可以分為Cortex-M0、Cortex-M3、Cortex-M4和Cortex-M7幾種類型。STM32微控制器的分類如表1.1所示。
表1.1 STM32微控制器的分類

下面簡要介紹幾款較為常用的STM32微控制器。
(1)STM32-L1系列超低功耗型微控制器。該系列微控制器基于Cortex-M3內核,工作頻率為32MHz,在性能、存儲器容量和引腳數量等方面擴展了超低功耗型產品系列,最低功耗模式電流消耗為0.27μA/MHz,動態運行模式電流消耗為230μA/MHz。
(2)STM32-F1系列基本型微控制器。該系列微控制器最大化地集成了高性能與低功耗特性,主要包含5個產品線,它們之間的引腳、外設和軟件均相互兼容。其中STM32-F103系列微控制器屬于增強型系列,具有高達1MB的片上內存,還具有電動機控制、USB和CAN模塊,性價比較高,市場占有率非常高。
(3)STM32-F2系列高性能型微控制器。該系列微控制器利用了創新的自適應實時內存(ART)加速器和多層總線矩陣技術,具有1MB片上內存、128KB以太網MAC的SRAM、USB2.0HS OTG、攝像頭接口,以及高度集成化的硬件加密支持和外部存儲器接口。
(4)STM32-F4系列高性能型微控制器。該系列微控制器將實時控制功能與信號處理功能完美地結合在一起,并保留了STM32-F2系列引腳的兼容性,具有更大容量的SRAM,也改進了一些外設,如全雙工I2S總線和更快的ADC等。
2. STM32微控制器的命名規則
以STM32F103ZET6微控制器為例,講解一下STM32微控制器的命名規則。STM32微控制器的命名規則如圖1.2所示。如果想要更加具體地了解STM32微控制器的命名規則,則可以查閱《STMCU選型手冊》。

圖1.2 STM32微控制器的命名規則
3. STM32微控制器的選型
通過前面的介紹,我們已經大致了解了STM32微控制器的分類和命名規則。在此基礎上,根據實際情況的具體需求,可以大致確定所要選用的STM32微控制器的內核型號和產品系列。例如,一般的工程應用的數據運算量不是特別大,基于Cortex-M3內核的STM32-F1系列微控制器即可滿足要求;如果需要進行大量的數據運算,且對實時控制和數字信號處理能力要求很高,或者需要外接RGB大屏幕,則推薦選擇基于Cortex-M4內核的STM32-F4系列微控制器。
在明確了產品系列之后,可以進一步選擇產品線。以基于Cortex-M3內核的STM32-F1系列微控制器為例,如果僅需要用到電動機控制或消費類電子控制功能,則選擇STM32F100或STM32F101系列微控制器即可;如果還需要用到USB通信、CAN總線等模塊,則推薦選用STM32F103系列微控制器,這也是目前市場上應用最廣泛的微控制器系列之一;如果對網絡通信要求較高,則可以選用STM32F105或STM32F107系列微控制器。對于同一個產品系列,不同的產品線采用的內核是相同的,但核外的片上外設存在差異。具體選型情況要視實際的應用場合而定。
確定好產品線之后,即可選擇具體的型號。參照STM32微控制器的命名規則,可以先確定微控制器的引腳數目。引腳多的微控制器的功能相對多一些,當然價格也貴一些,具體要根據實際應用中的功能需求進行選擇,一般夠用就好。確定好了引腳數目之后再選擇FLASH存儲器容量的大小。對于STM32微控制器而言,具有相同引腳數目的微控制器會有不同的FLASH存儲器容量可供選擇,它也要根據實際需要進行選擇,程序大就選擇容量大的FLASH存儲器,一般也是夠用即可。到這里,根據實際的應用需求,確定了所需的微控制器的具體型號,下一步的工作就是開發相應的應用。