STM32是意法半導體 (STMicroelectronics) 公司推出的新一代基于Cortex-M內(nèi)核的32位微控制器系列。STM32以其 高性能、低功耗、一流的外設 、簡單易用等特點在近幾年迅速發(fā)展,占領了很大市場,得到了很多開發(fā)者青睞。其應用領域包括電機驅動和 應用控制 ,PC游戲****外設和 GPS平臺 ** , 可編程控制器(PLC) 、 變頻器 、打印機和掃描儀**等。(除了STM32,意法半導體公司還推出了8位微處理器STM8系列,因其高性價比也有很多開發(fā)者在使用。這里暫不介紹STM8系列)

STM32系列成員眾多,按其性能可分為入門型(F0系列),基礎型(F1系列),增強型(F3系列),高性能型(F4,F(xiàn)7等)。按內(nèi)核的不同分為Cortex-M0(F0系列),Cortex-M3(F1、F3系列),Cortex-M4(F4系列)等。一般初學者選擇F103系列較多,既能滿足學習要求,又不至于太貴。
光憑一句“高性能”可能對其性能還是沒有什么概念。下面是一個常見單片機的性能分數(shù)對照表,可供參考。



對照表最下面的AT89C52就是最典型的51單片機,可以看到其分數(shù)只有2.36。而STM32F103的分數(shù)達到了177,STM32F407更是達到了566。
近幾年,國產(chǎn)單片機也迅速崛起,在性能上已經(jīng)不輸國外。例如ESP8266、ESP32系列已經(jīng)獲得眾多單片機開發(fā)者的喜愛,不僅性能強大,而且自帶wifi模塊。又如對標STM32的GD32系列,其性能也已經(jīng)不低于STM32,只是其學習資源不如STM32多。
很多人都是從51開始學習單片機,大學教材也大都以51單片機為例。STM32相比于51單片機,性能大幅提升,外設也更多,為了方便開發(fā),ST官方專門發(fā)布了標準外設庫,只要調(diào)用外設庫里的函數(shù)就能輕松使用各種外設,而不需要對寄存器進行直接操作。
由于STM32功能較強,內(nèi)部寄存器復雜且多,所以使用起來也相對較麻煩。比如要給某個IO口置高電平,51單片機只要 P0^0=1; 一行程序就能實現(xiàn),但是STM32首先要調(diào)用GPIO的標準外設庫,然后進行GPIO初始化并使能對應的時鐘,然后才能將GPIO置位(當然也可以直接操作寄存器,不過STM32寄存器太多,使用更不方便)。所以很多51單片機學習者剛開始學習STM32會覺得無從下手,其實只要了解了STM32的庫函數(shù),其開發(fā)就和51一樣簡單,而且對于大型的項目開發(fā)其優(yōu)勢就體現(xiàn)出來了。學習STM32就是學習其庫函數(shù),從官方的庫函數(shù)使用手冊入手,學習起來還是很簡單的。
STM32型號很多,所以有著規(guī)范的命名規(guī)則,從其型號便可知道其部分參數(shù),如產(chǎn)品類型,F(xiàn)lash容量,封裝。

文將以STM32F103C8T6這款單片機為例來介紹STM32。
從命名規(guī)則可以知道,STM32F103C8T6是STM32基礎型單片機,采用LQFP 48 封裝,帶有64KB的Flash(閃存程序存儲器)。其最高工作頻率72MHz,20KB的SRAM,2個12位ADC(模數(shù)轉換器),7通道DMA控制器并支持定時器、ADC、SPI、IIC等,帶有7個定時器,多達9個通信接口(2個IIC、3個USART、2個SPI、CAN接口、USB2.0)。下圖是其引腳圖。
由于引腳有限,很多IO口都是功能復用,下圖是其IO功能復用情況。

接下來詳細介紹各個外設
1.GPIO
GPIO即通用輸入輸出口,也就是我們常說的IO口。這款單片機有PA(PA0-PA15)、PB(PB0-PB15)、PC 3組IO(PC13-PC15),類似于STC89C52的P0、P1、P2口,A與B組每組16個,但C組只有3個。GPIO的排列分布不像51單片機那么規(guī)則,其實是考慮到開發(fā)者需要擴展IO時減少電路圖的更改。有些GPIO默認是不做普通IO口的,例如PB4、PB3默認是作為JTAG使用,PC14、PC15默認作為RTC的晶振接口,如需作為普通IO口使用,則需要將對應復用功能屏蔽。
2.ADC
這款單片機有兩個12位的ADC(PB0:ADC_IN8、PB1:ADC_IN9),用以將0-3.3V的電壓模擬量轉成數(shù)字量(0-2^12)。每個ADC共用多達16個外部通道, 可以實現(xiàn)單次或掃描轉換。在掃描模式下,自動進行在選定的一組模擬輸入上的轉換。需要注意的是,ADC的電源是獨立于供電電源的,其供電引腳為VSS-A與VDD-A,一般可以將這兩個引腳直接與3.3V電源相連。包括其他的幾組VDD和VSS,直接與3.3V電源連接即可(之所以分幾個電源,是為了提高供電穩(wěn)定性)
3.晶振
從上面的引腳圖可以看出,STM32可以外接兩個晶振。其中8M晶振就是單片機CPU運行用的,雖然晶振頻率只有8M,但其內(nèi)部頻率最高可以達到72MHz,這得益于其內(nèi)部的分頻器,將8M震蕩頻率經(jīng)二分頻就得到了16M,經(jīng)過多次分頻就能得到更高的頻率。
下圖是其時鐘樹示意圖。

另外一個32.768kHz的低頻晶振是用于內(nèi)部 RTC時鐘 。STM32自帶RTC時鐘,類似于手機、電腦的系統(tǒng)時鐘。不知大家有沒有注意過,在我們的手機或者電腦沒有聯(lián)網(wǎng)的時候,重新開機后仍然可以顯示時間,其實這就是RTC時鐘。原理就是在手機或者電腦主電源斷電的情況下,自動啟用后備電源(電腦的后備電源就是主板上的紐扣電池),維持RTC時鐘晶振工作,以實現(xiàn)主電源斷電下也能計時。之所以不采用8M高頻晶振作為RTC的振蕩源,是因為高頻晶振受溫度、制作工藝影響大而容易出現(xiàn)誤差(RTC的誤差就小得多了)。要想使用STM32的RTC,只需要給1號引腳Vbat接一個紐扣電池即可,在未接3.3V電源時,會自動使用紐扣電池供電,接了3.3V電源又會自動切換至3.3V電源供電。因為RTC耗電極低,所以一顆紐扣電池也足夠使用很長時間。但是在主電源斷電情況下,如果紐扣電池也沒電了,內(nèi)部的時鐘時間就會丟失,再次上電就恢復成了初始時間。
關于其具體用法,以后再做詳細介紹。
4.IIC、USART、SPI通信
STM32外設豐富,支持硬件級的IIC、USART、SP通信。相比于軟件實現(xiàn)的通信,硬件級的更快,更穩(wěn)定,更方便。
IIC一般用于單片機與傳感器、顯示屏、EEPROM等外設間的數(shù)據(jù)傳輸。其IIC接口支持 7 位或 10 位尋址, 7 位從模式時支持雙從地址尋址。內(nèi)置了硬件 CRC發(fā)生器/ 校驗器。
它們可以使用** DMA** 操作并支持 SMBus 總線 2.0 版 /PMBus 總線。
USART可用于單片機與電腦的的串口通信。USART1接口通信速率可達4.5Mbps,其他接口的通信速率可達2.25Mbps。USART接口具有硬 件的CTS和RTS信號管理、支持IrDA SIR ENDEC傳輸編解碼、兼容ISO7816的智能卡并提供LIN主/ 從功能。 所有USART接口都可以使用DMA操作。
SPI比前兩種通信擁有更快的通信速率,一般用于數(shù)據(jù)傳輸量大的場合,比如控制高分辨率或高刷新率的彩屏。SPI接口,在從或主模式下,全雙工和半雙工的通信速率可達18Mbps。3位的預分頻器可 產(chǎn)生8種主模式頻率,可配置成每幀8位或16位。硬件的CRC產(chǎn)生/校驗支持基本的SD卡和MMC模式。 所有的SPI接口都可以使用DMA操作。
5.JTAG、SWD與仿真器
在STM32上有幾個接口稱為JTAG、SWD。JTAG接口(Joint Test Action Group,聯(lián)合測試工作組),是一種國際標準測試協(xié)議(IEEE 1149.1兼容),主要用于芯片內(nèi)部測試。現(xiàn)在多數(shù)的高級器件都支持JTAG協(xié)議,如DSP、FPGA器件等。標準的JTAG接口是4線:TMS(PA13)、TCK(PA14)、TDI(PA15)、TDO(PB3),分別為模式選擇、時鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。有了JTAG,就可以對單片機程序進行在線調(diào)試,包括 斷點調(diào)試 ,變量監(jiān) 控 ,對于程序查錯是非常方便。

SWD接口即串行調(diào)試(SerialWireDebug),是一種和JTAG不同的調(diào)試模式,最直接的區(qū)別是調(diào)試接口上,SWD只需要4(或者5)個引腳:3.3V、GND、SWDIO(PA13)、SWCLK(PA14)。他的SWDIO、SWCLK與JTAG的TMS、TCK復用了。
要想實現(xiàn)在線調(diào)試,還需要專門的仿真工具。常用的仿真器有J-Link、U-Link、ST-Link
J-Link其實就是一個USB轉JTAG的工具,可將電腦與JTAG端口相連。JLINK是一個通用的開發(fā)工具,可以用于KEIL、IAR、ADS 等平臺。速度,效率,功能都很好。
U-Link是ARM/KEIL公司推出的仿真器,不過現(xiàn)在能買到的都是其升級版本ULINK2和ULINK Pro仿真器。ULINK/ULINK2可以配合Keil軟件實現(xiàn)仿真功能,僅可以在Keil軟件上使用(不支持IAR、ADS等其他平臺)。
ST-Link是專門針對意法半導體STM8和STM32系列芯片的仿真器。ST-LINK /V2指定的SWIM標準接口和JTAG / SWD標準接口,通過ST-Link可直接將程序寫入單片機(SWIM / JTAG / SWD)以及EEPROM燒寫,當然也也支持在線仿真,相比另外兩種,更具優(yōu)勢。所以個人非常推薦該仿真器

6.程序開發(fā)平臺
STM32程序開發(fā)平臺主要有Keil、IAR、STM32CudeIDE等。Keil支持眾多單片機開發(fā),版本如今已更新到Keil 5。IAR相比Keil,編譯的代碼更緊湊,實際使用與Keil差不多。STM32CudeIDE是STM專門為STM32開發(fā)的IDE,但是使用還是比不上前兩種平臺
7.其他
內(nèi)部溫度傳感器:STM內(nèi)部有一個溫度傳感器,并連接到PC13,可用于監(jiān)測芯片溫度。
控制器區(qū)域網(wǎng)絡(CAN):CAN 接口兼容規(guī)范 2.0A 和 2.0B( 主動 ) ,位速率高達 1Mbps 。它可以接收和發(fā)送 11 位標識符的標準幀, 也可以接收和發(fā)送29 位標識符的擴展幀。具有 3 個發(fā)送郵箱和 2 個接收 FIFO , 3 級 14 個可調(diào)節(jié)的濾波器。一般用與單片機與上位機的通信。
通用串行總線 (USB):內(nèi)嵌一個兼容全速 USB 的設備控制器,遵循全速 USB 設備 (12Mbps
) 標準,端點可由軟件配置,具有待機 / 喚醒功能。
定時器:中等容量的STM32F103xx增強型系列產(chǎn)品包含1個高級控制定時器、3個普通定時器,以及2個看門 狗定時器和1個系統(tǒng)嘀嗒定時器。

看門狗:用于防止程序跑偏。獨立的看門狗是基于一個 12 位的遞減計數(shù)器和一個 8 位的預分頻器,它由一個內(nèi)部獨立的 40kHz 的 RC 振蕩器提供時鐘;因為這個RC 振蕩器獨立于主時鐘,所以它可運行于停機和待機模式。它可以被當 成看門狗用于在發(fā)生問題時復位整個系統(tǒng),或作為一個自由定時器為應用程序提供超時管理。通過 選項字節(jié)可以配置成是軟件或硬件啟動看門狗。
在調(diào)試模式下,計數(shù)器可以被凍結。窗口看門狗內(nèi)有一個7 位的遞減計數(shù)器,并可以設置成自由運行。它可以被當成看門狗用于在發(fā)生問 題時復位整個系統(tǒng)。它由主時鐘驅動,具有早期預警中斷功能;在調(diào)試模式下,計數(shù)器可以被凍結。
-
單片機
+關注
關注
6076文章
45495瀏覽量
670436 -
STM32
+關注
關注
2309文章
11162瀏覽量
373474 -
微處理器
+關注
關注
11文章
2431瀏覽量
85855
發(fā)布評論請先 登錄
沙場點兵STM32微處理器全系列成員
沙場點兵STM32微處理器全系列成員
GW1N系列安徽非易失性大時代FPGA芯片成員可靠嗎
沙場點兵STM32微處理器有哪些系列
STM8微控制器全系列成員
小米A系列成為AndroidOne銷量冠軍
Holtek推出單向發(fā)射SoC Flash MCU系列成員
【STM32】STM32 MCU系列介紹
stm32f030系列時鐘介紹
STM32系列成員介紹
評論