- STM32是ST公司基于ARM Cortex-M內(nèi)核開發(fā)的32位微控制器
ST:ST公司;
M:Microcontroller(微控制器MCU,單片機);
32:32位單片機;
內(nèi)核:ARM Cortex-M,程序指令的執(zhí)行、加減乘除,相當(dāng)于芯片CPU
*ST公司拿著ARM公司的內(nèi)核,完善外圍電路,封裝起來成了STM32
*以ARM為內(nèi)核的芯片稱為基于ARM內(nèi)核的單片機
- STM32在嵌入式領(lǐng)域
智能車:用STM32做尋跡小車,讀取光電傳感器或攝像頭數(shù)據(jù),然后驅(qū)動電機前進和轉(zhuǎn)彎;
無人機:STM32讀取陀螺儀加速度計的姿態(tài)數(shù)據(jù),然后根據(jù)控制算法去控制電機的速度,從而保證飛機穩(wěn)定飛行;
機器人:STM32控制舵機來控制機器人的關(guān)節(jié),讓機器人運動;
無線通信:給STM32接上2.4G無線模塊或者藍牙、WIFI模塊;
物聯(lián)網(wǎng):借助無線通信模塊通信,比如藍牙、WIFI、ZigBee,再通過STM32驅(qū)動繼電器控制220V電路的通斷;
工業(yè)控制:PLC主控有STM32;
娛樂電子產(chǎn)品
STM32家族
- ?ARM既指ARM公司,也指ARM處理器內(nèi)核
- ARM公司是全球領(lǐng)先的半導(dǎo)體知識產(chǎn)權(quán)(IP)提供商,只設(shè)計內(nèi)核不生產(chǎn)實物
-
ARM公司設(shè)計ARM內(nèi)核,半導(dǎo)體廠商完善內(nèi)核周邊電路并生產(chǎn)芯片,如STM32
?
- ARM內(nèi)核型號
- ?STM32F108C8T6
- 片上資源/外設(shè)(Peripheral)
通過程序配置外設(shè)到達想要的功能
下面兩個是位于Cortex-M3內(nèi)核里面的外設(shè),其余的則位于內(nèi)核外
NVIC |
嵌套向量中斷控制器 |
管理中斷,如配置中斷優(yōu)先級
SysTick |
系統(tǒng)滴答定時器 |
內(nèi)核里的定時器,給操作系統(tǒng)提供定時服務(wù),完成delay函數(shù)
STM32可以加入操作系統(tǒng)如FreeRTOS,UCOS等,如果用了這些操作系統(tǒng),就需SysTick提供定時來進行任務(wù)切換功能
RCC |
復(fù)位和時鐘控制 |
對系統(tǒng)的時鐘進行配置,使能各模塊的時鐘。STM32中,其他外設(shè)上電情況下默認為了降低功耗沒有時鐘。不給時鐘的情況下,操作外設(shè)是無效的,外設(shè)也不會工作。所以操作外設(shè)之前,應(yīng)使能時鐘。RCC來完成時鐘的使能
GPIO |
通用IO口 |
用來點燈讀取按鍵等
AFIO |
復(fù)用IO口 |
復(fù)用端口的重定義,還有中斷端口的配置
EXTI |
外部中斷 |
配置好外部中斷后,就可以觸發(fā)中斷,讓CPU來處理任務(wù)
TIM |
定時器 |
整個STM32最常用、功能最多的外設(shè)
分為高級定時器(最復(fù)雜)、通用定時器(最常用)、基本定時器三種類型
可完成定時中斷的任務(wù),測頻率,生成PWM波形,配置成專用編碼器接口等功能
生成PWM波形是電機驅(qū)動、舵機驅(qū)動的最基本要求
ADC |
模數(shù)轉(zhuǎn)換器 |
STM32內(nèi)置了12位的AD轉(zhuǎn)換器,可以直接讀取IO口的模擬電壓值,無需外部連接AD芯片
DMA |
直接內(nèi)存訪問 |
幫助CPU完成搬運大量數(shù)據(jù)這樣繁雜的任務(wù)
USART |
同步/異步串口通信 |
UART異步串口
I2C |
I2C通信 |
SPI |
SPI通信 |
非常常用的兩個通信協(xié)議,STM32內(nèi)置了它們的控制器,可以用硬件輸出時序波形
通用IO口模擬時序波形也可
CAN |
CAN通信 |
通信協(xié)議,多用于汽車領(lǐng)域
USB |
USB通信 |
通信協(xié)議,可用STM32的USB外設(shè)做一個模擬鼠標(biāo)、模擬U盤等設(shè)備
RTC |
實時時鐘 |
實時時鐘,在STM32內(nèi)部完成年月日、時分秒等計算功能,可接外部備用電池,即使掉電也可以正常使用
CRC |
CRC校驗 |
一種數(shù)據(jù)的校驗方式,用來判斷數(shù)據(jù)的正確性
PWR |
電源控制 |
可讓芯片進入睡眠模式等狀態(tài),達到省電的目的
BKP |
備份寄存器 |
這是一段存儲器,當(dāng)系統(tǒng)掉電時,仍可由備用電池保持數(shù)據(jù)。根據(jù)需要還可以完成一些特殊功能。
IWDG |
獨立看門狗 |
WWDG |
窗口看門狗 |
當(dāng)單片機因為電磁干擾四級或者程序設(shè)計不合理出現(xiàn)死循環(huán)時,看門狗可以及時復(fù)位芯片,保證系統(tǒng)穩(wěn)定
DAC |
數(shù)模轉(zhuǎn)換器 |
在IO口直接輸出模擬電壓,是ADC模數(shù)轉(zhuǎn)換的逆過程
SDIO |
SD卡接口 |
SD卡是接口,可以用來讀取SD卡
FSMC |
可變靜態(tài)存儲控制器 |
可變靜態(tài)存儲控制器,可以用來拓展內(nèi)存,或者配置成其他總線協(xié)議,用于某些硬件操作
USB OTG |
USB主機接口 |
用OTG功能,可以讓STM32作為USB主機去讀取其他USB設(shè)備
- 這是STM32F1整個系列所有外設(shè),并不是所有型號擁有所有外設(shè),就比如C8T6不含后四個外設(shè)
- 具體含幾個外設(shè),需看對應(yīng)型號的數(shù)據(jù)手冊,看外設(shè)資源表
總覽
英文縮寫 |
名稱 |
英文縮寫 |
名稱 |
NVIC |
嵌套向量中斷控制器 |
CAN |
CAN通信 |
SysTick |
系統(tǒng)滴答定時器 |
USB |
USB通信 |
RCC |
復(fù)位和時鐘控制 |
RTC |
實時時鐘 |
GPIO |
通用IO口 |
CRC |
CRC校驗 |
AFIO |
復(fù)用IO口 |
PWR |
電源控制 |
EXTI |
外部中斷 |
BKP |
備份寄存器 |
TIM |
定時器 |
IWDG |
獨立看門狗 |
ADC |
模數(shù)轉(zhuǎn)換器 |
WWDG |
窗口看門狗 |
DMA |
直接內(nèi)存訪問 |
DAC |
數(shù)模轉(zhuǎn)換器 |
USART |
同步/異步串口通信 |
SDIO |
SD卡接口 |
I2C |
I2C通信 |
FSMC |
可變靜態(tài)存儲控制器 |
SPI |
SPI通信 |
USB OTG |
USB主機接口 |
芯片命名規(guī)則
芯片的系統(tǒng)結(jié)構(gòu)
? ?芯片的引腳定義(數(shù)據(jù)手冊上整理而來)
- ?對于使用芯片而言,引腳定義非常重要,看完引腳定義大概就知道該如何使用芯片
- 上表中,標(biāo)紅色是電源相關(guān)的引腳,標(biāo)藍色是最小系統(tǒng)相關(guān)引腳,標(biāo)綠色是IO口、功能口這些引腳
- S代表電源,I代表輸入,O代表輸出,IO代表輸入輸出
- I/O口電平代表可容忍電壓,F(xiàn)T代表可容忍5V電壓,沒有FT的只能容忍3.3V電壓,
- 若沒有FT需要裝5V電壓需安裝電平轉(zhuǎn)換裝置
- 主功能,上電后默認的功能,一般與引腳名相同,若不同,引腳的實際功能是主功能而不是引腳名功能
- 默認復(fù)用功能,IO口上同時連接的外設(shè)功能引腳,這個配置IO口時還可以選擇通用IO口還是復(fù)用功能
- 重定義功能,當(dāng)兩個功能同時復(fù)用在了一個IO口上,確實需要用到這兩個功能,把其中一個復(fù)用功能重映射到其他端口上,前提是這個重定義功能的表里有對應(yīng)的端口
依次來看引腳定義
1.VBAT,備用電池供電的引腳,這個引腳可以接個3V的電池,當(dāng)系統(tǒng)電源斷電時,備用電池可以給內(nèi)部的RTC時鐘和大部分寄存器提供電源
2.號引腳是IO口或者侵入檢測或者RTC,IO口可以根據(jù)程序輸出或讀取高低電平,是最基本也是最常用的功能,侵入檢測可以用來做安全保障的功能(eg:產(chǎn)品的安全性較高,可以在外殼加一些防拆的觸點,然后接上電路到這個引腳上,若有人強行拆開設(shè)備,那觸點斷開,這個引腳電平變化,就會觸發(fā)STM32的侵入信號,然后就會清空數(shù)據(jù)來保障安全),RTC引腳可以用來輸出RTC校準時鐘、RTC鬧鐘脈沖或者秒脈沖
3.4.號是IO口或者接32.768KHz的RTC晶振
5.6.號引腳接系統(tǒng)的主晶振,一般是8MHz,芯片內(nèi)部有鎖相環(huán)電路,可以對這個8MHz的頻率進行倍頻最終產(chǎn)生72MHz的頻率,作為系統(tǒng)的主時鐘
7.號NRST是系統(tǒng)復(fù)位引腳,N代表它是低電平復(fù)位的
8.9.號引腳是內(nèi)部模擬部分的電源,比如ADC、RC震蕩器等,VSS是負極接GND,VDD是正極接3.3V
10~19號引腳是IO口,PA0兼具WKUP的功能,這個可以用于喚醒處于待機模式的STM32
20.號引腳是IO口或者BOOT1引腳,BOOT引腳是用來配置啟動模式的
*推薦使用上表加粗的IO口,沒有加粗的IO口可能需要配置,或者兼具其他功能
21.22.號都是IO口
23.24.35.36.47.48.號的VSS_1/_2/_3和VDD_1/_2/_3是系統(tǒng)的主電源口,同樣的VSS是正極、VDD是負極
*STM32內(nèi)部采用了分區(qū)供電的方式,所以供電口會比較多,在使用時,把VSS都接GND,VDD都接3.3V即可
25~33.號都是IO口
34.37~40.號是IO口或者調(diào)試端口,調(diào)試端口是用來調(diào)試程序和下載程序的,這個STM32支持SWD和JTAG的兩種調(diào)試方式。SWD需要兩根線,分別是SWDIO和SWCLK;JTAG需要5根線,分別是JTMS、JTCK、JTDI、JTDO、NJTRST。使用STLINK下載調(diào)試程序,STLINK采用的是SWD的方式,所以只需占用PA13和PA14兩個IO口,在使用SWD的調(diào)試方式時,剩下的PA15、PB3、PB4可以切換成為普通的IO口來使用,但需要在程序中配置
41~43.號,45~46號都是IO口
44.號BOOT0,用來做啟動配置的
STM32啟動配置
?文章來源地址http://www.zghlxwxcb.cn/news/detail-836892.html
- 啟動配置的作用就是指定程序開始運行的位置。
- 一般情況下,程序都是在Flash程序存儲器開始執(zhí)行,某些情況下,可以讓程序在別的地方開始執(zhí)行,用以完成特殊功能
- 接0就是接地的意思,接X就是無論接哪里,接1就是接3.3V電源+
- 第二個模式01,用來做串口下載用的,系統(tǒng)存儲器存的就是STM32一段BootLoader程序(作用是接收串口的數(shù)據(jù),然后刷新到主閃存中)
*什么時候用到串口下載?把34.37~40號五個調(diào)試端口全部配置成了IO口,無法下載程序,這時使用串口下載;或者沒有STLINK,也沒有JLINK,那就可以用串口進行下載程序
- 內(nèi)置SRAM模式啟動,是用來程序調(diào)試的,現(xiàn)階段用的比較少
- BOOT引腳的值是在上電復(fù)位后的一瞬間有效的,之后就隨便了
- 引腳定義中,20號引腳BOOT1和PB2是在同一個引腳上的,上電瞬間,是BOOT1的功能,當(dāng)?shù)谒膫€時鐘過之后,就是PB2的功能了
- 想讓STM32正常工作:首先需要把電源部分和最小系統(tǒng)部分的電路連接好,也就是表中標(biāo)紅色和標(biāo)藍色的部分
單片機只有一個芯片是無法工作的,為其連接最基本的電路,這些最基本的電路稱為最小系統(tǒng)電路
最小系統(tǒng)電路
?跳線帽
- ?自己畫板子可以參考這個電路,如果用STM32最小系統(tǒng)板設(shè)計電路的話最小系統(tǒng)板上已經(jīng)包含了這些電路
STM32F103C8T6核心板原理圖背面
?*以上是最基本的STM32的介紹,想要學(xué)好STM32還需閱讀官方詳細介紹
?自己在概念上的一些疑惑,通過搜索畫了一張思維導(dǎo)圖理解文章來源:http://www.zghlxwxcb.cn/news/detail-836892.html
?
到了這里,關(guān)于STM32學(xué)習(xí)筆記【江科協(xié)】【1-2】STM32簡介的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!