4.1 STM32 系統(tǒng)架構(gòu)
STM32 的系統(tǒng)架構(gòu)比 51 單片機(jī)就要強(qiáng)大很多了。首先我們看看 STM32 的系統(tǒng)架構(gòu)圖:
圖1 系統(tǒng)架構(gòu)
STM32 主系統(tǒng)主要由四個(gè)驅(qū)動(dòng)單元和四個(gè)被動(dòng)單元構(gòu)成。
四個(gè)驅(qū)動(dòng)單元
? 內(nèi)核 DCode 總線;
? 系統(tǒng)總線;
? 通用 DMA1;
? 通用 DMA2;
四被動(dòng)單元
? AHB 到 APB 的橋:連接所有的 APB 設(shè)備;
? 內(nèi)部 FlASH 閃存;
? 內(nèi)部 SRAM;
? FSMC;
下面我們具體講解一下圖中幾個(gè)總線的知識(shí):
① ICode 總線:該總線將 M3 內(nèi)核指令總線和閃存指令接口相連,指令的預(yù)取在該總線上面完成。
② DCode 總線:該總線將 M3 內(nèi)核的 DCode 總線與閃存存儲(chǔ)器的數(shù)據(jù)接口相連接,常量加載和調(diào)試訪問(wèn)在該總線上面完成。
③ 系統(tǒng)總線:該總線連接 M3 內(nèi)核的系統(tǒng)總線到總線矩陣,總線矩陣協(xié)調(diào)內(nèi)核和 DMA 間訪問(wèn)。
④ DMA 總線:該總線將 DMA 的 AHB 主控接口與總線矩陣相連,總線矩陣協(xié)調(diào) CPU 的DCode 和 DMA 到 SRAM,閃存和外設(shè)的訪問(wèn)。
⑤ 總線矩陣:總線矩陣協(xié)調(diào)內(nèi)核系統(tǒng)總線和 DMA 主控總線之間的訪問(wèn)仲裁,仲裁利用輪換算法。
⑥ AHB/APB 橋:這兩個(gè)橋在 AHB 和 2 個(gè) APB 總線間提供同步連接, APB1 操作速度限于36MHz,APB2 操作速度全速。
對(duì)于系統(tǒng)架構(gòu)的知識(shí),在剛開(kāi)始學(xué)習(xí) STM32 的時(shí)候只需要一個(gè)大概的了解,大致知道是個(gè)什么情況即可。對(duì)于尋址之類的知識(shí),這里就不做深入的講解。
圖2 CMSIS架構(gòu)
4.2 STM32的地址映射
在分析這個(gè)問(wèn)題之前,我們看看51 單片機(jī)中是怎么做的。 51 單片機(jī)開(kāi)發(fā)中經(jīng)常會(huì)引用一個(gè) reg51.h 的頭文件,下面我們看看他是怎么把名字和寄存器聯(lián)系起來(lái)的:
sfr P0 =0x80;
sfr 也是一種擴(kuò)充數(shù)據(jù)類型,占用一個(gè)內(nèi)存單元,值域?yàn)?0~255。利用它可以訪問(wèn) 51 單片機(jī)內(nèi)部的所有特殊功能寄存器。如用 sfr P1 = 0x90 這一句定義 P1 為 P1 端口在片內(nèi)的寄存器。然后我們往地址為 0x80 的寄存器設(shè)值的方法是: P0=value;通過(guò)改變value的值來(lái)控制單片機(jī)。
圖3 寄存器映射關(guān)系
所謂地址映射,就是將芯片上的存儲(chǔ)器甚至 I/O 等資源與地址建立一一對(duì)應(yīng)的關(guān)系。如果某地址對(duì)應(yīng)著某寄存器,我們就可以運(yùn)用 C 語(yǔ)言的指針來(lái)尋址并修改這個(gè)地址上的內(nèi)容,從而實(shí)現(xiàn)修改該寄存器的內(nèi)容。打個(gè)比方,寄存器就像快遞員,當(dāng)你在某寶上買了東西后,快遞員就按照地址送到你手上,要想準(zhǔn)確無(wú)誤的送到你手上,就必須保證地址準(zhǔn)確無(wú)誤。
Cortex-M3 的地址映射也是類似的。Cortex-M3 有 32 根地址線,所以它的尋址空間大小為 2 32 bit=4 GB。ARM 公司設(shè)計(jì)時(shí),預(yù)先把這 4 GB 的尋址空間大致地分配好了。它把從 0x40000000 至 0x5FFFFFFF( 512 MB)的地址分配給片上外設(shè)。通過(guò)把片上外設(shè)的寄存器映射到這個(gè)地址區(qū),就可以簡(jiǎn)單地以訪問(wèn)內(nèi)存的方式,訪問(wèn)這些外設(shè)的寄存器,從而控制 外設(shè)的工作。這樣,片上外設(shè)可以使用 C 語(yǔ)言來(lái)操作。CM3 存儲(chǔ)器映射見(jiàn)圖 4- 4。
stm32f10x.h 這個(gè)文件中重要的內(nèi)容就是把 STM32 的所有寄存器進(jìn)行地址映射。如同51 單片機(jī)的 < reg51.h > 頭文件一樣,stm32f10x.h 像一個(gè)大表格,我們?cè)谑褂玫臅r(shí)候就是通過(guò)宏定義進(jìn)行類似查表的操作,大家想象一下沒(méi)有這個(gè)文件的話,我們要怎樣訪問(wèn) STM32的寄存器?有什么缺點(diǎn)?不進(jìn)行這些宏定義的缺點(diǎn)有 :
1)地址容易寫錯(cuò)。
2)我們需要查大量的手冊(cè)來(lái)確定哪個(gè)地址對(duì)應(yīng)哪個(gè)寄存器。
3)看起來(lái)還不好看,且容易造成編程的錯(cuò)誤,效率低,影響開(kāi)發(fā)進(jìn)度。
當(dāng)然,這些工作都是由 ST 的固件工程師來(lái)完成的,只有設(shè)計(jì) CM3 的人才是最了解 CM3的,才能寫出完美的庫(kù)。
在這里我們以外接了 LED 燈的外設(shè) GPIOC 為例,如果是其他的 IO 端口,則改成相應(yīng)的地址即可。在這個(gè)文件中一系列宏實(shí)現(xiàn)了地址映射。
#define GPIOC_BASE (APB2PERIPH_BASE + 0x1000)
#define APB2PERIPH_BASE (PERIPH_BASE + 0x1000
#define PERIPH_BASE ((uint32_t)0x40000000)
這幾個(gè)宏定義是從文件中的幾個(gè)部分抽離出來(lái)的,具體的內(nèi)容讀者可參考stm32f10x.h 源碼。
圖4 Cortex-M3 預(yù)定義的存儲(chǔ)器映射
首先看到 PERIPH_BASE 這個(gè)宏,宏展開(kāi)為 0x40000000,并把它強(qiáng)制轉(zhuǎn)換為 uint32_t的 32 位類型數(shù)據(jù),這是因?yàn)?STM32 的地址是 32 位的,是不是覺(jué)得 0x40000000 這個(gè)地址很熟?是的,這是 Cortex-M3 核分配給片上外設(shè) 512MB 尋址空間中的第一個(gè)地址,我們把0x40000000 稱為外設(shè)基地址。
接下來(lái)是宏 APB2PERIPH_BASE,宏展開(kāi)為 PERIPH_BASE(外設(shè)基地址)加上偏移地址 0x10000,即指向的地址為 0x40010000。這個(gè) APB2PERIPH_BASE 宏是什么地址呢?STM32 不同的外設(shè)是掛載在不同的總線上的,見(jiàn)圖 4-6。STM32 芯片有 AHB 總線、APB2總線和 APB1 總線,掛載在這些總線上的外設(shè)有特定的地址范圍。
其中像 GPIO、串口 1、ADC 及部分定時(shí)器是掛載在稱為 APB2 的總線上,掛載到APB2 總 線 上 的 外 設(shè) 地 址 空 間 是 從 0x40010000 至 0x40013FFF 地 址。 這 里 的 第 一個(gè) 地 址, 也 就 是 0x40010000,稱為 APB2PERIPH_BASE (APB2 總線外設(shè)基地址)。
而 APB2 總線基地址相對(duì)于外設(shè)基地址的偏移量為 0x10000 個(gè)地址,即為 APB2 相對(duì)外設(shè)基地址的偏移地址,見(jiàn)表1。
表1
上一篇:stm32知識(shí)學(xué)習(xí)的先后順序
下一篇:STM32 USB的實(shí)現(xiàn)和軟件實(shí)現(xiàn)
推薦閱讀最新更新時(shí)間:2025-07-02 19:00



- 熱門資源推薦
- 熱門放大器推薦
-
【Follow me第三季第一期】STM32F429I-DISC1任務(wù)匯總
-
【Follow me第三季第1期】任務(wù)三:Arduino環(huán)境運(yùn)動(dòng)傳感器數(shù)據(jù)讀取
-
【Follow me 第三季第1期】任務(wù)二——Arduino控制板載LED燈,并實(shí)現(xiàn)呼吸燈效果
-
【Follow me 第三季第1期】任務(wù)一 源碼-——Arduino環(huán)境Hello EEWorld
-
射頻電路設(shè)計(jì)
-
器件應(yīng)力降額總規(guī)范(艾默生)
-
5G通信系統(tǒng)定位技術(shù)原理與方法
-
笨辦法學(xué)C語(yǔ)言
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無(wú)線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開(kāi)發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹(shù)莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁(yè)和arduino的通訊
- ESP32 freeRTOS使用測(cè)試
- MC33174DR2G 有源高 Q 陷波濾波器的典型應(yīng)用
- 使用 Analog Devices 的 LTC1159CG-3.3 的參考設(shè)計(jì)
- LTC1727IS8-5、3.3V 和 5V 雙電源監(jiān)視器的典型應(yīng)用
- 使用 LT6202 將 ±10V 雙極性信號(hào)轉(zhuǎn)換為 0V 至 5V 輸入信號(hào)到 LTC2370CMS-16 的典型應(yīng)用
- LT3724 的典型應(yīng)用 - 高電壓、電流模式開(kāi)關(guān)穩(wěn)壓控制器
- TS9010ACX5 RF 150mA, 1.5V CMOS LDO with Enable 典型應(yīng)用電路
- L5150GJ 5 V 低壓差穩(wěn)壓器的典型應(yīng)用
- MPC86XADS、XPC8xx 參考板,基于 XPC860EN MPU PowerQUICC MPC8xx 處理器
- OP249GSZ-REEL 失調(diào)調(diào)整的典型應(yīng)用電路,用于同相放大器配置
- 使用 Microchip Technology 的 MAX3221ECAE 的參考設(shè)計(jì)
- 飛思卡爾燒寫工具mfgtools的使用
- 電動(dòng)汽車如何讓充電像加油一樣快?
- 研究報(bào)告稱蘋果現(xiàn)在才感覺(jué)到全球芯片短缺問(wèn)題
- 基于AVR與DDS技術(shù)的超聲波電源研制
- 東芝:供應(yīng)緊張將至少持續(xù)到明年3月
- HTC預(yù)告下月將推出了一款“Viverse”元宇宙智能機(jī)
- 異構(gòu)集成推動(dòng)面板制程設(shè)備(驅(qū)動(dòng)器)的改變 異構(gòu)集成(HI)已成為封裝技術(shù)最新的轉(zhuǎn)折點(diǎn)
- 投入式液位計(jì)安裝要求_投入式液位計(jì)的優(yōu)缺點(diǎn)
- 基于STM32的printf串口數(shù)據(jù)輸出
- 虹科脈沖發(fā)生器在讀出電子測(cè)試中的應(yīng)用
- 潤(rùn)石科技推出RS3215-Q1系列低壓差線性穩(wěn)壓器
- CANape 23開(kāi)啟智能測(cè)試新時(shí)代(下)
- 軟件定義汽車電源管理設(shè)計(jì):NXP的PMIC選型攻略解析
- 深度測(cè)評(píng)時(shí)空壺X1同聲傳譯器:全球最先進(jìn)AI同傳設(shè)備的非凡實(shí)力
- 作為領(lǐng)先的垂直整合制造商(IDM),英飛凌在 300mm氮化鎵生產(chǎn)路線圖方面取得突破
- 鐵威馬F6-424 Max:六盤位擴(kuò)容+國(guó)產(chǎn)系統(tǒng)兼容,小白也能玩轉(zhuǎn)NAS
- 開(kāi)關(guān)電源給鉛酸電池恒流恒壓充電的電流跳動(dòng)問(wèn)題解析
- 自動(dòng)駕駛中的激光雷達(dá)是否會(huì)傷害攝像頭?
- 觸覺(jué)技術(shù)助力企業(yè)在激烈的市場(chǎng)競(jìng)爭(zhēng)中脫穎而出
- 芯片中的串?dāng)_噪聲有幾類
- 炎炎夏日,空調(diào)的正確使用方法你知道嗎?
- 外媒提前上手三星Note9:S Pen應(yīng)用更有趣
- 聚焦四大行業(yè) 一窺華南智造
- 自動(dòng)駕駛當(dāng)“貨郎” 機(jī)器人走街串巷還需跨溝邁坎
- 中國(guó)芯片發(fā)展需要"萬(wàn)眾用芯" 而非“萬(wàn)眾創(chuàng)芯”
- 運(yùn)營(yíng)商推廣5G之后4G變慢是被限速了嗎?
- 小米折疊屏真機(jī)曝光!搭載MIUI 12系統(tǒng) 或今年發(fā)布
- 新專利顯示蘋果研究技術(shù)提高智能手環(huán)鉸鏈可靠性
- 三星Galaxy S21系列價(jià)格:頂配版近萬(wàn)元
- 華為申請(qǐng)了“花瓣搜索”、“花瓣地圖”商標(biāo)
- DIY - 動(dòng)手制作自己的GPS??!zt
- 超寬帶定位應(yīng)用
- 分享一本書(shū):瘋狂STM32實(shí)戰(zhàn)講學(xué)錄
- 基于FPGA的以太網(wǎng)MII接口擴(kuò)展設(shè)計(jì)與實(shí)現(xiàn)
- LIS3DHTR 數(shù)據(jù)轉(zhuǎn)換 bit→g
- 【R7F0C809】第十篇--項(xiàng)目第一階段總結(jié)
- 汽車網(wǎng)絡(luò)熱引發(fā)新一輪征戰(zhàn)
- 【RISC-V MCU CH32V103測(cè)評(píng)】板子開(kāi)箱與原理圖分析
- 曬圖--大批LM3S811抵達(dá)EEWORLD
- GPIO驅(qū)動(dòng)函數(shù)----GPIOPinIntEnable