一、實驗器材介紹
二、STM32簡介
1.STM32 名詞解釋
STM32是ST公司基于ARM Cortex-M內核開發的32位微控制器。
- ST,指ST公司(意法半導體);
- M,MicroController 微控制器(MCU,MicroController Unit 微控制器單元/單片機);
- 32,32位的單片機;
表示CPU一次可以處理32位數據寬度,即4個字節(現在電腦大多數都是64位);
這也決定了CPU能直接處理的最大內存地址空間是2^32字節(4GB),也意味著32位CPU最多只能利用4GB的RAM,即使物理上安裝了更多的內存,也無法全部訪問; - ARM Cortex-M內核,即STM32的內部核心部分(包括CPU),由ARM公司設計的;
ARM公司設計內核,芯片廠商完善外圍電路,生產芯片。這些芯片,都叫做基于arm內核的芯片;
2.STM32在嵌入式領域的應用
- 智能車:例如尋跡小車:讀取光電傳感器或者攝像頭的數據,然后驅動電機前進和轉彎;
- 無人機:讀取陀螺儀加速度計的姿態數據,根據控制算法去控制電機的速度,從而保證飛機穩定飛行;
- 機器人:驅動舵機來控制機器人的關節,讓機器人運動;
- 無線通信/物聯網:連接2.4G、藍牙、WiFi、Zigebee、4G等無線通信模塊;
- 工業控制:PLC,Programmable Logic Controller,可編程邏輯控制器,一種數字運算操作的電子系統,專為工業環境應用而設計。被廣泛應用于制造業和過程工業中,用來自動化控制機械流程和設備;
- 娛樂電子產品:穿戴電子產品、玩具;
- STM32功能強大、性能優異、片上資源豐富、功耗低、是一款經典的嵌入式微控制器;
3.STM32系列產品
??????
4.ARM介紹
- ARM既指ARM公司,也指ARM處理器內核;
- ARM公司是全球領先的半導體知識產權(IP,intellectual property,知識產權)提供商,即只設計芯片,不生產芯片。全世界超過95%的智能手機和平板電腦都采用ARM架構;
- ARM公司設計ARM內核,半導體廠商完善內核周邊電路并生產芯片;
- ARM系列內核
5.課程使用的STM32(STM32F103C8T6)芯片介紹
- 參數介紹
- 系列:STM32F1主流系列;
- 內核:ARM Cortex-M3內核;
- 主頻:最大72MHz;
- RAM(運行內存):20K(實際存儲介質:SRAM);
- ROM(程序存儲器):64K(實際存儲介質:Flash);
- 供電電壓:2.0~3.6V(標準3.3V)【注意:USB輸出電壓是5V,不能直接給STM32供電,需要加一個穩壓芯片,把電壓降到3.3V,再給STM32供電】
- 封裝:LQFP48,共48個引腳,如下圖所示:
6.STM32的片上資源/外設(Peripheral)
(注意:以下外設為STM32F1整個系列的所有外設,并不是所有型號都擁有全部外設,具體型號擁有的外設需要查詢對應的數據手冊)
- 片上外設的概念
- 片上外設/片內外設:芯片內部的外設;
- 片外外設:芯片外部的外設;
- NVIC,Nested Vectored Interrupt Controller,嵌套向量中控制器。內核里用于管理中斷的設備,比如配置中斷優先級等。
- SysTick,系統滴答定時器。主要用來給操作系統提供定時服務的。STM32可以加入Free RTOS、RT-Thread、Ucos等實時操作系統,當加入這些操作系統時就需要SysTick提供定時來進行任務切換的功能。
- RCC,Reset and Clock Control,復位和時鐘控制。 STM32中其他的外設在上電后默認是不開啟時鐘的,此時操作外設是無效的(這樣能降低功耗,所以在使用外設之前,需要先用RCC開啟對應的時鐘)。
- GPIO, General-purpose I/O,通用IO(Input/Output,輸入/輸出)。可以用來電燈和讀取按鍵。
- AFIO,Alternate functions I/O, 復用IO。用來完成復用端口的重定義和中斷端口的配置。
- EXTI,External Interrupt ,外部中斷。配置好外部中斷后,當引腳的電平按照中斷觸發條件變化時,就會觸發中斷,來讓CPU處理對應的情況。
- TIM,Timer,定時器。STM32中最常用,功能最多的外設,分為基本定時器、通用定時器和高級定時器三種類型。高級定時器最復雜,通用定時最常用。這兩種定時器都可以完成定時中斷、測頻率、生成PWM波形、配置成專用的編碼器接口等功能。
- ADC, Analog to Digital Converter,模數轉換器。STM32內置了12位的ADC,可以直接讀取IO口的模擬電壓值,無需外部連接ADC芯片。
- DMA,Direct Memory Access,直接內存訪問。可以幫助CPU完成搬運大量數據的繁雜任務。
- USART,Universal Synchronous Asynchronous Receiver Transmitter,通用同步異步收發器。既支持同步串口也支持異步串口,實際中使用異步串口比較多。
- I2C,Inter-Integrated Circuit,集成電路間通信。實現集成電路(IC/芯片)間以半雙工串行方式通信的設備。
- SPI,Serial Peripheral Interface,串行外設接口。實現集成電路(IC/芯片)間以全雙工串行方式通信的設備。
- CAN,Controller Area Network,控制器局域網。一般用于汽車領域。
- USB,Universal Serial Bus,通用串行總線。可以用該設備做一個模擬鼠標、模擬U盤等設備。
- RTC,Real Time Clock,實時時鐘。實現年月日、時分秒的計時功能。需要接外部電池,即使掉電也能正常運行。
- CRC,Cyclic Redundancy Check,循環冗余校驗。一種數據校驗的方式,來判斷數據的正確性。
- PWR, Power Control, 功率控制。可以讓芯片進入睡眠模式等狀態,來實現省電/低功耗的目的.
- BKP, Bakup registers,備份寄存器。一段存儲器,當系統掉電時,這段存儲器由備用電池供電,保持數據。
- IWDG,Independent WatchDog,獨立看門狗。
- WWDG,Window WatchDog,窗口看門狗。
當單片機因為程序干擾死機或程序設計不合理出現死循環時,看門狗可以及時復位新芯片,保證系統的穩定。 - DAC,Digital-to-Analog Converter,數模轉換器。可以在IO口直接輸出模擬電壓。
- SDIO,Secure digital input/output interface,安全數據輸入/輸出接口,即SD卡接口。可以用來讀取SD卡。
- FSMC, Flexible static memory controller, 可變靜態存儲控制器。用于擴展內存或配置成其他總線協議,來操作某些硬件。
- USB OTG,USB On-The-GO,USB主機接口。一種USB接口標準,允許設備在不需要計算機的情況下直接連接和交換數據。即可以讓STM32作為主機去讀取其他USB設備。
7.STM32的命名規則
8.STM32系統結構
9.STM32F103C8T6引腳定義
在使用一款芯片時,一般需要先著重地看一下其引腳定義。
- 引腳劃分
- 橙色的是電源相關的引腳:
- 藍色的是最小系統相關的引腳;
- 綠色的是IO口、功能口相關的引腳;
- 表頭介紹
- 引腳號和引腳名稱:
與芯片引腳一一對應; - 類型:
S:代表電源;
I:代表輸入;O:代表輸出;I/O:代表輸入/輸出; - I/O口電平:代表IO口所能容忍的電壓;
有FT(Five Tolerate),代表能容忍5V的電壓;沒有FT,代表只能容忍3.3V電壓;
如果沒有FT需要接5V的電平,就需要加裝電平轉換電路; - 主功能:
一般就是上電后默認的功能,一般和引腳名稱相同。如果不同的話,引腳的實際功能就
是主功能,而不是引腳名稱對應的功能。 - 默認復用功能:
IO口上同時連接的外設功能引腳: - 重定義功能:
如果兩個都需要使用的功能同時連接在同一個IO口上,可以把其中一個功能重映射到其他的端口上(前提是重定義功能的表里有對應的端口);
- 引腳號和引腳名稱:
- 具體引腳介紹
- pin1:VBAT
備用電池供電引腳。該引腳可以接一個3V的電池,當系統電源斷電時,備用電池可以給內部的RTC時鐘和備份寄存器供電。 - pin2:PC13-TAMPER_RTC
- 普通IO口,輸出或讀取對應引腳的高低電平;
- tamper(篡改)用來做入侵檢測,實現安全保障功能。當產品的安全性要求比較高時,可以在外殼上加一些防拆的觸點,然后把這些觸電接到這個引腳上。如果有人強拆設備,觸點斷開,這個引腳的電平變化,就會觸發STM32的入侵信號,STM32就會清空數據來保證安全。
- pin3~pin4:PC14-OSC32_IN、PC15-OSC32_OUT
- 普通IO口:
- 接32.768KHZ的RTC晶振;(32.768K = 215,內部RTC電路經過215次方分頻,就可以產生1HZ的時間信號了)
- pin5~pin6:OSC_IN、OSC_OUT
- 接系統的主時鐘,一般是8MHZ。(芯片內部有鎖相環電路可以對8MHZ的頻率進行倍頻,最終產生72MHZ的頻率,作為系統的主時鐘)
- pin7:NRST
系統復位引腳,N代表是低電平復位。 - pin8~pin9:VSSA、VDDA
內部模擬部分的供電引腳,比如:ADC,RC振蕩器等。
VSS是負極,接GND;VDD是正極,接3.3V; - pin10~ pin19:PA0~ PA7、PB0~PB1;
普通IO口;
其中PA0還兼具了WKUP功能(可以用來喚醒處于待機模式的STM32); - pin20、pin44:PB2/BOOT1、BOOT2
普通IO、BOOT1引腳;
BOOT2引腳;
【BOOT引腳用來配置啟動模式】 - pin21~pin22
普通IO; - pin23、pin24;pin35、pin36;pin47、pin48:VSS_1、VDD_1;VSS_2、VDD_2;VSS_3、VDD_3;
這些都是系統的主電源口。STM32內部采用了分區供電的方式,在使用時,把VSS接GND,VDD接3.3V即可。 - pin25~ pin33:PB12~ PB15;PA8 ~PA12;
普通IO; - pin34、pin37~pin40:
- 普通IO;
- 調試端口;(默認的主功能都是調試端口,用來調試程序或下載程序)
- STM32支持SWD和JTAG兩種調試方式。
- SWD需要兩根線,分別是SWDIO和SWDCLK;
- JTAG需要5根線,分別是JTMS、JTCK、JTDI、JTDO、NJTRST;
【教程中使用STLINK來下載和調試程序,STLINK用的是SWD的方式,只需要使用PA13、PA14兩個端口,剩下的PA15、PB3、PB4可以在程序中配置為普通IO口來使用】
- STM32支持SWD和JTAG兩種調試方式。
- pin41~ pin43:PB5~PB7
普通IO; - pin45、pin46:PB8~PB9
普通IO;
- pin1:VBAT
10.STM32的啟動配置
啟動配置,即指定程序開始運行的位置,一般程序都是在Flash程序存儲器(主閃存存儲器)開始執行的。
- BOOT1接0(接GND),BOOT0接x(無論BOOT1接什么都可以)
啟動模式都是主閃存存儲器模式,這時候主閃存存儲器被選為啟動區域,也就是正常的執行Flash閃存里面的程序,這種模式是最常用的模式,一般情況下都是這個配置。 - BOOT1接0,BOOT0接1(接3.3V)
啟動模式是系統存儲器模式,這時候系統存儲器被選為啟動區域。這個模式就是用來做
串口下載用的(系統存儲器中存的是STM32中的一段BootLoader程序,用來接收串口的數據,然后刷新到主閃存中。)
一般使用串口下載時,就需要配置成該模式。(當把下載SWD和JTAG的調試端口全部配置成IO口時,就不能使用SWD和JTAG的方式下載程序了,此時就需要使用串口來下載程序;如果沒有STLINK和JTLINK,也可以使用串口來下載程序) - BOOT1接1,BOOT0接1
啟動模式是內置SRAM模式,這時候內置RAM被選為啟動區域。這個模式主要用來程序調試的,用的比較少。
【BOOT引腳的值是在上電復位后的一瞬間有效的,之后就隨便了。】
11.STM32的最小系統
如果要STM32正常工作,就需要把電源部分和最小系統部分的電路連接好。單片機只有一個芯片是無法工作的,需要連接最基本的電路才能正常工作,這個最基本的電路就叫做最小系統電路。