Tangwx

Tangwx

博客网站

01.STM32基礎知識綜述

1 STM32 基礎知識綜述#

1.1 STM32 簡介#

STM32 是 ST 公司基於 ARM Cortex-M 內核開發的 32 位微控制器

MMicrocontroller的意思

STM32 常應用在嵌入式領域,如智能車、無人機、機器人、無線通信、物聯網、工業控制、娛樂電子產品等

STM32 功能強大、性能優異、片上資源豐富、功耗低,是一款經典的嵌入式微控制器

image-20220809082441069

1.2 ARM 簡介#

ARM 既指 ARM 公司,也指 ARM 處理器內核

ARM 公司是全球領先的半導體知識產權(IP)提供商,全世界超過 95% 的智能手機和平板電腦都採用 ARM 架構

ARM 公司設計 ARM 內核,半導體廠商完善內核周邊電路並生產芯片

image-20220809083032037

image-20220809083101283

1.3 STM32F103C8T6 簡介#

系列:主流系列 STM32F1

內核:ARM Cortex-M3

主頻:72MHz

RAM:20K(SRAM)

ROM:64K(Flash)

供電:2.0~3.6V(標準 3.3V)

封裝:LQFP48

image-20220809084122792

1.4 片上資源 / 外設 (Peripheral)#

STM32 可以加入操作系統,例如 FreeRTOS、UCOS 等,如果使用了這些操作系統則需要SysTick提供定時來進行任務切換功能。

UART是異步串口的意思,而STM32USART既支持異步串口也支持同步串口,異步串口使用相對較多

英文縮寫名稱英文縮寫名稱
NVIC嵌套向量中斷控制器CANCAN 通信
SysTick系統滴答定時器USBUSB 通信
RCC復位和時鐘控制RTC實時鐘
GPIO通用 IO 口CRCCRC 校驗
AFIO復用 IO 口PWR電源控制
EXTI外部中斷BKP備份寄存器
TIM定時器IWDG獨立看門狗
ADC模數轉換器WWDG窗口看門狗
DMA直接內存訪問DAC數模轉換器
USART同步 / 異步串口通信SDIOSD 卡接口
I2CI2C 通信FSMC可變靜態存儲控制器
SPISPI 通信USB OTGUSB 主機接口

1.5 芯片命名規範#

image-20220809084423056

1.6 系統結構#

Cortex-M3內核引出三條總線,ICode指令總線,DCode數據總線,System系統總線

ICode總線和DCode總線主要是用來連接Flash閃存的

Flash裡面存儲的是我們編寫的程序

ICode指令總線用來加載程序指令

DCode數據總線用來加載數據,例如常量和調試數據等

System系統總線連接到SRAM,FSMC

SRAM用於存儲程序運行時的變量數據

AHB系統總線用於掛載主要的外設,AHB 的意思是先進高性能總線,掛載的一般是最基本的或者性能比較高的外設,例如復位和時鐘控制這些最基本的電路,還有SDIO也是掛載在AHB上的

APB1 APB2兩個外設總線,APB的意思是先進外設總線,用於連接一般的外設,

因為AHBAPB的總線協議,總線速度,數據傳送格式的差異,所以中間需要加兩個橋接來完成數據的轉換和緩存,AHB的整體性能比APB高一些,其中APB2的性能又比APB1的性能高一些,APB2一般和AHB同頻率,都是 72MHz,APB1一般是 36MHz, 所以APB2連接的一般都是外設中稍微重要的部分,如GPIO端口還有一些外設的 1 號選手 (USART1,SPI1,TIM1,TIM8等),TIM8TIM1一樣也是高級定時器,所以也是重要的外設,ADC,EXTI,AFIO也是接在APB2上面的;其他的像 2,3,4,5 號外設,DAC、PWR、BPK 等次要一點的外設都會分配到APB1上去;當然在使用時,個人一般感覺不到APB2APB1的性能差異,只需要知道這個外設是掛載到哪個總線上的就可以了

DMA可以當做內核 CPU 的小秘書,比如大量數據搬運的活,讓 CPU 來幹就太浪費時間了,DMA主要幹這些簡單且反復要幹的事情,DMA通過DMA總線連接到總線矩陣上,他擁有和 CPU 一樣的總線控制權,用於訪問這些外設,當需要DMA搬運數據時,外設就會通過請求線發送DMA請求,DMA就會獲得總線控制權,訪問並轉運數據,整個過程不需要 CPU 的參與,省下了 CPU 的時間用來幹其他的事情

image-20220809084538311

1.7 引腳定義#

紅色的是電源相關的引腳

藍色的是最小系統相關的引腳

綠色的是 IO 口、功能口這些引腳

S類型代表電源

I類型代表輸入

O類型代表輸出

IO類型代表輸入輸出

FT代表這個引腳能容忍5V的電壓,沒有FT的只能容忍3.3V的電壓

STM32內部採用分區供電的方式,供電口較多,使用時VSS都接GNDVDD都接3.3V

STM32支持SWDJTAG兩種調試方式

SWD需要兩根線,分別是SWDIOSWCLK

JTAG需要 5 根線,分別是JTMS,JTCK,JTDI,JTDO,NJTRST

STLINK使用的是SWD的方式下載調試程序,所以只需要佔用PA13PA14這兩個IO

使用SWD方式下載時,PA15 PB3 PB4可以切換為普通IO口來使用,但是需要在程序中進行配置,不配置的話默認是不會用作 IO 口的

image-20220810080019866

image-20220811092650888

引腳號引腳名稱引腳定義主功能
1VBAT备用电池供电引脚,此引脚可外接一个 3V 电池,当系统电源断电时,备用电池可以给内部的 RTC 时钟和备份寄存器提供电源VBAT
2PC13-TAMPER-RTCI/O 口或侵入检测或 RTC,IO 口可以根据程序输出或读取高低电平,侵入检测可以用来做安全保障的功能,RTC 可以用来输出 RTC 校准时钟、RTC 闹钟脉冲或秒脉冲PC13
3、4PC14-OSC32_IN/PC15-OSC32_OUTIO 口或者接 32.768KHz 的 RTC 晶振PC14/PC15
5、6OSC_IN/OSC_OUT接系统的主晶振,一般是 8MHz,芯片内部有锁相环电路,可以对这个 8MHz 的频率进行倍频,最终产生 72MHz 的频率作为系统的主时钟OSC_IN/OSC_OUT
7NRST系统复位引脚,N 表示低电平复位NRST
8,9VSSA/VDDA内部模拟部分的电源,如 ADC、RC 振荡器等;VSS 是负极接是 GND,VDD 是正极接 3.3VVSSA/VDDA
10PA0-WKUPIO 口兼具 WKUP 功能,可以唤醒处于待机模式的 STM32PA0
11-19PA1、PA2、PA3、PA4、PA5、PA6、PA7、PB0、PB1IO 口PA1-PB1
20PB2IO 口或 BOOT1 引脚,BOOT 引脚用来配置启动模式PB2/BOOT1
21,22PB10、PB11IO 口PB10,PB11
23,24VSS_1/VDD_1系统主电源口,VSS 是负极,VDD 是正极VSS_1/VDD_1
25-33PB12、PB13、PB14、PB15、PA8、PA9、PA10、PA11、PA12IO 口PB12、PB13、PB14、PB15、PA8、PA9、PA10、PA11、PA12
34PA13IO 口或调试端口JTMS/SWDIO
35,36VSS_2/VDD_2系统主电源口,VSS 是负极,VDD 是正极VSS_2/VDD_2
37-40PA14/PA15/PB3/PB4IO 口或调试端口 (用来调试和下载程序)JTCK_SWCLK/JTDI/JTDO/NJTRST
41-43PB5/PB6/PB7IO 口PB5/PB6/PB7
44BOOT0与 BOOT1 一样也是用来做启动配置的BOOT0
45,46PB8/PB9IO 口PB8/PB9
47,48VSS_3/VDD_3系统主电源口,VSS 是负极,VDD 是正极VSS_3/VDD_3

1.8 啟動配置#

啟動配置的作用是指定程序開始運行的位置,一般情況下程序都是在 Flash 程序存儲器開始執行,但是在某些情況下我們也可以讓程序在別的地方開始執行,用來完成特殊的功能

BOOT1=0 BOOT0=1 模式用來做串口下載,系統存儲器存的就是STM32中的一段BootLoader程序,BootLoader程序的作用就是接收串口的數據然後刷新到主閃存中,這樣就可以使用串口下載程序了,一般我們需要串口下載程序的時候會配置到這個模式上

BOOT0=0 啟動模式為主閃存存儲器的模式,主閃存存儲器被選為啟動區域,此時正常執行 Flash 閃存裡面的程序,這個模式是最常用的模式,一般情況下都是這個配置

BOOT1=1 BOOT0=1 配置的是SRAM啟動,這個模式主要用於程序調試,現階段使用較少

BOOT引腳的值是在上電復位的一瞬間有效的,之後就隨意了

image-20220809084630785

1.9 最小系統電路#

OSC32是 32.768KHz 晶振的意思,32768 是 2 的 15 次方,內部 RTC 電路經過 2 點 15 次方分頻就可以生成 1s 的時間信號了,

image-20220809084704647

RTC晶振是 32.768KHz 晶振

img

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。