1-stm32相關(guān)the insiders guide to stm32_W_第1頁
1-stm32相關(guān)the insiders guide to stm32_W_第2頁
1-stm32相關(guān)the insiders guide to stm32_W_第3頁
1-stm32相關(guān)the insiders guide to stm32_W_第4頁
1-stm32相關(guān)the insiders guide to stm32_W_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 TheInsidersTo TheSTM32uide一個(gè)工程師對(duì)STM32系列的介紹ARMBased M翻譯:xi_liang 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 前言 很久以前看到這篇文檔,看到里面對(duì) STM32 的介紹,發(fā)現(xiàn)了不少在 STM32 技術(shù)手冊(cè)也找不到的答案。正如文檔題目所說的,這可以說是一份 STM32 的技術(shù)資料??吹胶芏嗑W(wǎng)友說學(xué)不會(huì) STM32,其實(shí)不難怪,因?yàn)?STM32 的內(nèi)容實(shí)在是太多了,一個(gè) LED 流水燈也需要了解 Corte

2、x-m3 技術(shù)手冊(cè)和 STM32 數(shù)據(jù)手冊(cè)的內(nèi)容,還有 Thumb-2 指令集,甚至 Keil 開發(fā)環(huán)境,和下載工具的使用。但和 ARM+linux 相比還是挺容易的。這篇文檔對(duì) Cortex-m3 和 STM32 的介紹淺顯易懂,只有一百多頁沒有太多的廢話,卻介紹了 Cortex-m3 和 STM32 的絕大部分細(xì)節(jié)。于是從 2012-12 月開始我著手翻譯,前后也花了不少時(shí)間,終于可以在今天完成了。 這篇文檔主要研究 Cortex-m3 和STM32 的架構(gòu)和實(shí)現(xiàn)細(xì)節(jié)。Cortex-m3 技術(shù)手冊(cè)里面除了介紹編程相關(guān)內(nèi)容外,可能還介紹了 Cortex-m3 芯片設(shè)計(jì)的相關(guān)內(nèi)容,而這里只介紹

3、一些Cortex-m3 的主要特性和軟件編程需要關(guān)注的內(nèi)容。STM32 作為一個(gè)基于 Cortex-m3 的處理器,有著 Cortex-m3 的共同特性,同時(shí)也有著一些差異,例如中斷優(yōu)先級(jí)寄存器,Cortex-m3 定義了 8 位,而STM32 只實(shí)現(xiàn)了 4 位。 雖然在 ARM7,ARM9 時(shí)代研究匯編有時(shí)也很有必要,因?yàn)橛胁簧俟ぷ餍枰趩?dòng)時(shí)需要用匯編來完成,如代碼從 NOR 搬運(yùn)到 SDRAM 等。雖然我也有一定的匯編功底,但 Thumb-2 指令集太復(fù)雜了,對(duì)于常用的編程來說研究?jī)r(jià)值并不大。 當(dāng)然你不要期望這篇文章能給你的 STM32 編程水平有很大的提高,這只是作為入門的一篇文檔,如

4、果你已經(jīng)用過 STM32 進(jìn)行編程,但還對(duì)里面的某些架構(gòu)或具體實(shí)現(xiàn)細(xì)節(jié)不太清楚,也許這篇文章能給你帶來意外收獲。 2 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 目錄1.簡(jiǎn)介81.1 什么是 Cortex?81.2 一起來看看 STM3291.2.1 復(fù)雜性101.2.2 系統(tǒng)安全性111.2.3 代碼安全性111.2.4 軟件開發(fā)111.2.5 STM32 系列112Cortex 概述132.1 ARM 體系結(jié)構(gòu)版本132.2 Cortex 處理器和 Cortex CPU142.3 Cortex CPU142.3.1

5、 流水線142.3.2 編程模型 XPSR152.3.3 CPU 工作模式162.3.4 Thumb-2 指令集172.3.5 存儲(chǔ)器映射182.3.6 非對(duì)齊的內(nèi)存訪問192.3.7 位帶192.4 Cortex 處理器222.4.1 總線222.4.2 總線矩陣222.4.3 系統(tǒng)定時(shí)器222.4.4 中斷處理232.4.5 嵌套向量中斷控制器 NVIC 操作異常的進(jìn)入和退出 高級(jí)中斷處理模式.1 中斷搶占253 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 www.stm32

6、.2 尾鏈.3 遲來2 NVIC 的配置和使用2.1 異常向量表272.5 電源管理模式312.5.1 進(jìn)入低功耗模式312.5.2 CoreSight 調(diào)試支持3 指令跟蹤332.6 Cortex 微控制器軟件接口標(biāo)準(zhǔn)343讓它工作363.1 封裝類型和 PCB 封裝363.2 電源363.3 復(fù)位電路373.3.1 基本硬件原理圖373.4 振蕩器383.4.1 外部高速振蕩器383.4.2 外部低速振蕩器383.4.3 時(shí)鐘輸出383.4.4 啟動(dòng)引腳和在線編程393.4.6 調(diào)試端口394.

7、STM32 的系統(tǒng)架構(gòu)404.1 的內(nèi)存布局414.1.1 寄存器地址查閱434.2 最大化性能444.2.1 鎖相環(huán)4 總線配置474.2.2 FLASH 緩沖區(qū)494.2.3 直接內(nèi)存訪問495外設(shè)555.1 通用外設(shè)554 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 5.1.1 通用 IO5 復(fù)用功能5輸出605.1.2 外部中斷605.1.3 ADC6 轉(zhuǎn)換時(shí)間和轉(zhuǎn)換組6 模擬看門狗6 基本 ADC 配置655.1.

8、3.4 雙轉(zhuǎn)換模式6.1 注入同步模式和常規(guī)同步模式6 常規(guī)/注入混合同步模式6 快速交叉模式和慢速交叉模式6 交替觸發(fā)模式6 混合常規(guī)同步和交替觸發(fā)模式6 混合注入同步和交替觸發(fā)模式685.1.4 數(shù)字到模擬轉(zhuǎn)換器6 DMA 支持70 轉(zhuǎn)換電壓和轉(zhuǎn)換時(shí)間70 噪聲和三角波信號(hào)發(fā)生器705.1.5 通用定時(shí)器和高級(jí)定時(shí)器7 通用定時(shí)器7.1 捕獲比較單元7.2 捕獲單元7.3 PWM 輸入模式

9、7.4 編碼器接口7.5 輸出比較7.6 PWM 模式7.7 單脈沖模式7 高級(jí)定時(shí)器7.1 中斷功能765 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 .2 霍爾傳感器接口7 定時(shí)器同步7 基本定時(shí)器785.1.6 RTC 和備份寄存器785.1.7 備份寄存器和侵入引腳795.1.8 循環(huán)冗余校驗(yàn)計(jì)算單位。795.2 互聯(lián)性805.2.1 SPI805.2.2 內(nèi)部集成音頻

10、I2S 外設(shè)815.2.3 I2C825.2.4 USART835.3 CAN 和 USB 控制器855.3.1 CAN 控制器855.4 USB886低功耗工作896.1 運(yùn)行模式896.1.1 預(yù)取緩沖器和半周期模式896.2 低功耗模式896.2.1 SLEEP 模式896.2.2 STOP 模式906.3 Standby 模式926.4 備份域功耗926.5 調(diào)試支持927安全特性937.1 復(fù)位控制937.2 電源電壓檢測(cè)947.3 時(shí)鐘安全系統(tǒng)947.4 看門狗957.4.1 窗口看門狗957.4.2 獨(dú)立看門狗976 百為技術(shù)官方網(wǎng)店 http:/baiweijishu.taob

11、技術(shù)支持論壇 7.5 外設(shè)特點(diǎn)987.5.1 GPIO 端口鎖定987.5.2 模擬看門狗987.5.3 中斷插入988內(nèi)存區(qū)域998.1 FLASH 模塊998.1.1 內(nèi)部 FLASH 的安全性和編程998.1.2 擦除與寫入操作1008.1.3 選項(xiàng)字節(jié)100 寫保護(hù)10 讀保護(hù)10 配置字節(jié)1018.1.4 靈活的靜態(tài)存儲(chǔ)器控制器10 NAND 和 PC 卡10 PC Card1048.1.5 SDIO 接口10 命令和數(shù)據(jù)傳輸10

12、SDIO 外設(shè)10.1 內(nèi)部結(jié)構(gòu)10.2 數(shù)據(jù)交易10.3 可用的文件系統(tǒng)1079開發(fā)工具1089.1 評(píng)估工具1089.2 庫和協(xié)議棧1089.3 RTOS10910.結(jié)束注10911.參考書目1097 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 1. 簡(jiǎn) 介在過去的六,七年里,微控制器設(shè)計(jì)領(lǐng)域里的主要發(fā)展趨勢(shì)之一是采用 ARM7 和 ARM9 CPU 作為通用型微控制器。今天,已經(jīng)有范圍廣泛的制造商提供大約240 個(gè)基于ARM 的微控制器?,F(xiàn)在,ST 微電子已經(jīng)推出了

13、 STM32,他們的第一個(gè)基于新的 ARM Cortex-M3 微控制器內(nèi)核的 微控制器。該控制器在性能和成本,以及低功率操作和硬實(shí)時(shí)控制方面設(shè)定了新的標(biāo)準(zhǔn)。 1.1 什么是 Cortex?ARM Cortex 系列是新一代的,一個(gè)為廣泛的技術(shù)需求提供標(biāo)準(zhǔn)架構(gòu)的處理器。與其他的ARM 處理器不同,Cortex 系列是一個(gè)完整的處理器核心,一個(gè)標(biāo)準(zhǔn)的 CPU 和系統(tǒng)架構(gòu)。Cortex 系列有三個(gè)主要的配置系列:A 為高端應(yīng)用系列,R 為實(shí)時(shí)應(yīng)用系列,M 為成本敏感和微控制器應(yīng)用系列。STM32 屬于M 配置系列,專為高系統(tǒng)性能與低功耗相結(jié)合設(shè)計(jì)的。它有足夠低的成本,足以挑戰(zhàn)傳統(tǒng)的 8 位和 16

14、 位微控制器。 雖然 ARM7 和 ARM9 的CPU 已經(jīng)被成功地集成到標(biāo)準(zhǔn)的微控制器,但它們的結(jié)構(gòu)還是不盡相同的。尤其在異常和中斷處理方面,這個(gè)是特別明顯的,因?yàn)槊恳粋€(gè)特定制造商都在設(shè)計(jì) 自己的解決方案。Cortex-M3 提供了一個(gè)超越了 CPU 的標(biāo)準(zhǔn)的微控制器核心(包括中斷系統(tǒng)的整個(gè)心臟,SysTick 定時(shí)器,調(diào)試系統(tǒng)和內(nèi)存映射)。 Cortex-M3 的 4Gbyte 地址空間被分成明確定義的區(qū)域:代碼區(qū),SRAM 區(qū),外設(shè)區(qū)和系統(tǒng)外設(shè)區(qū)。與 ARM7 不同的是,Cortex-M3 是一個(gè)哈佛結(jié)構(gòu)的處理器,所以有多條總線,允許執(zhí)行并行操作,提高其整體性能。與早期 的 ARM 架構(gòu)

15、不同,Cortex 系列允許未對(duì)齊的數(shù)據(jù)訪問。這將確保最有效地利用內(nèi)部 SRAM。Cortex 系列還有一個(gè)稱為位帶的方法,支持在兩個(gè) 1M byte 的內(nèi)存區(qū)域里進(jìn)行位設(shè)置和清除。這樣可以有效地訪問位于 SRAM 存儲(chǔ)器的外設(shè)寄存器和標(biāo)志,而不需要一個(gè)完整的布爾 處理器。 STM32 的核心是 Cortex-M3 處理器。Cortex M3 處理器是一個(gè)標(biāo)準(zhǔn)化的微控制器,包括 32 位CPU,總線結(jié)構(gòu), 嵌套的中斷單元,調(diào)試系統(tǒng)和標(biāo)準(zhǔn)內(nèi) 存布局。 8 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 Cortex-M3 核

16、心的關(guān)鍵部件之一是嵌套向量中斷控制器(NVIC)。NVIC 為所有基于 Cortex的微控制器提供了一個(gè)標(biāo)準(zhǔn)的中斷結(jié)構(gòu)和異常中斷處理。NVIC 提供專用的中斷向量多達(dá) 240 個(gè)中斷源,其中每個(gè)中斷源都可以設(shè)置獨(dú)立的優(yōu)先級(jí)。 NVIC 已被設(shè)計(jì)為可以極其快速地處理中斷。所花費(fèi)的時(shí)間從接收到中斷到進(jìn)入中斷服務(wù)程序的第一行代碼只有 12 個(gè)周期。這其中一部分是通過在 CPU 內(nèi)的微代碼的自動(dòng)堆棧處理實(shí)現(xiàn)的。在連續(xù)中斷的情況下,NVIC 使用“尾鏈”的方法,使連續(xù)中斷服務(wù)只有 6 個(gè)周期的延遲。在中斷嵌套階段,一個(gè)高優(yōu)先級(jí)的中斷可以搶占低優(yōu)先級(jí)的中斷而不產(chǎn)生任何額外的 CPU 周期。中斷結(jié)構(gòu)還緊密耦

17、合到Cortex-M3 內(nèi)核的低功耗模式內(nèi)。這使得配置 CPU 從一個(gè)中斷退出時(shí)自動(dòng)進(jìn)入一種低功耗模式是可能的。然后核心保持休眠,直到另一個(gè)異常或中斷的到來。 盡管 Cortex-M3 作為一種低成本的核心設(shè)計(jì),但它也還是一個(gè) 32 位的 CPU,因此支持兩個(gè)操作模式:線程模式和處理程序模式,每種模式可以配置自己的棧。這使得它支持更復(fù) 雜的軟件設(shè)計(jì)和更多的實(shí)時(shí)操作系統(tǒng)。 Cortex 核心還包括一個(gè) 24 位自動(dòng)重裝定時(shí)器,可以為RTOS 內(nèi)核提供一個(gè)周期性的中斷。ARM7 和 ARM9 CPU 具有兩個(gè)指令集(ARM 32 位 Thumb 16 位指令集),Cortex 系列支持 ARM T

18、humb-2 指令集。這種混合 16 位和 32 位的指令,為客戶提供 32 位的 ARM 指令集的性能和 16 位 Thumb 指令集的代碼密度。Thumb-2 指令集是一個(gè)豐富的指令集,被設(shè)計(jì)作為 C / C + +編譯器的目標(biāo)。這意味著在 Cortex 應(yīng)用程序完全可 以用 C 編碼。 1.2 一起來看看 STM32ST 已經(jīng)有四個(gè) ARM7 和 ARM9 微控制器系列,但 STM32 的性價(jià)比有著顯著的提升。批量 1 歐元多一點(diǎn)的價(jià)格, STM32 對(duì)現(xiàn)有的 16 位微控制器來說是一個(gè)嚴(yán)峻的挑戰(zhàn)。在寫作本文的時(shí)候,STM32 已經(jīng)發(fā)布了超過 75 個(gè)不同的型號(hào)。這些被分成四組:CPU

19、時(shí)鐘高達(dá) 36Mhz 的基本型,CPU 時(shí)鐘高達(dá) 72MHz 的增強(qiáng)型,增加 USB device 外設(shè)并且運(yùn)行在時(shí)鐘速度為 48MHz 的USB 型,稱為互聯(lián)型的第四組型號(hào)已經(jīng)發(fā)布?;ヂ?lián)型增加的先進(jìn)通信外設(shè)包括以太網(wǎng) MAC 和USB HOST/ OTG 控制器。所有組的型號(hào)的引腳和軟件兼容,并且提供 FLASH ROM 容量高達(dá) 512K 和64K SRAM。由最初的版本到現(xiàn)在,STM32 已經(jīng)可以擴(kuò)展到包括更大的 RAM 和 FLASH,以及 更復(fù)雜外設(shè)的設(shè)備。 低密度型設(shè)備;增強(qiáng)型和基本型9 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 www

20、.中密度型設(shè)備;增強(qiáng)型和基本型高密度設(shè)備;增強(qiáng)型和基本型1.2.1 復(fù)雜性乍一看,STM32 外設(shè)集看起來像一個(gè)典型的小型微控制器,具有外圍設(shè)備如雙 ADC,通用定時(shí)器,I2C,SPI,CAN,USB 和一個(gè)實(shí)時(shí)時(shí)鐘等等。不過這些外設(shè)的功能是非常豐富的。例如12 位 ADC,具有一個(gè)集成的溫度傳感器和多個(gè)轉(zhuǎn)換模式,并且雙 ADC 可以主從組合成ADC 的九種轉(zhuǎn)換模式。同樣地,四個(gè)定時(shí)器每個(gè)有四個(gè)捕捉比較單元,每個(gè)定時(shí)器模塊,也可以與其他定時(shí)器模塊組合,構(gòu)建復(fù)雜的定時(shí)器陣列。高級(jí)定時(shí)器能支持更復(fù)雜的電機(jī)控制, 有 6 個(gè)帶有可編程死區(qū)時(shí)間和中斷輸入線的 PWM 輸出,可強(qiáng)

21、制 PWM 信號(hào)到一個(gè)預(yù)先編程好的 安全狀態(tài)。SPI 外設(shè)有一個(gè) 8 位和 16 位硬件 CRC 發(fā)生器用來支持 SD 和MMC 卡接口。 令人驚訝的是,STM32 的小型微控制器還包括多達(dá) 12 通道的 DMA 單元。每通道可以用來傳輸 8/16/32 位數(shù)據(jù)到任何內(nèi)存位置的外設(shè)寄存器,或從任何內(nèi)存位置的外設(shè)寄存器接收數(shù)據(jù)。每一個(gè)外圍設(shè)備都可以是一個(gè)的 DMA 流控制器,根據(jù)需要發(fā)送或接收數(shù)據(jù)。內(nèi)部總線仲裁器和總線矩陣,最大限度地減少了 CPU 的數(shù)據(jù)訪問和 DMA 通道之間的仲裁。這意味著, DMA 單元在微控制器內(nèi)是靈活的,易于使用,真正實(shí)現(xiàn)自動(dòng)化數(shù)據(jù)流的。 STM32 是一款低功耗和高

22、性能的微控制器。它可以以 2V 電壓供電運(yùn)行在 72MHz,所有功 10 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 能跑起來僅消耗 36mA。結(jié)合 CORTEX 低功耗模式,STM32 待機(jī)功耗僅為 2A。一個(gè)內(nèi)部 8MHz RC 振蕩器,使得該芯片能夠在外部振蕩器仍然處于啟動(dòng)的情況下,迅速退出低功耗模式下。 這種快速的進(jìn)入和退出低功耗模式,進(jìn)一步降低了整體功耗。 1.2.2 系統(tǒng)安全性在要求更多的處理能力和更先進(jìn)的外圍設(shè)備的同時(shí),越來越多的現(xiàn)代應(yīng)用程序要求工作 在安全重要的環(huán)境??紤]到這一點(diǎn),STM32 有很多的硬

23、件特性幫助支持高度集成的應(yīng)用。其中包括一個(gè)低功耗電壓檢測(cè)器,時(shí)鐘安全系統(tǒng)和兩個(gè)獨(dú)立的看門狗。第一個(gè)看門狗是一個(gè)窗 口看門狗。這個(gè)看門狗,必須在規(guī)定的時(shí)間內(nèi)刷新。如果你處理太早,或者太晚,看門狗會(huì) 觸發(fā)。第二個(gè)看門狗是一個(gè)獨(dú)立的看門狗,擁有自己的獨(dú)立于主系統(tǒng)時(shí)鐘的外部振蕩器。進(jìn) 一步的時(shí)鐘安全系統(tǒng)可以檢測(cè)到外部主振蕩器的故障,然后從故障安全地返回到內(nèi)部 8MHz RC 振蕩器上。 1.2.3 代碼安全性現(xiàn)代設(shè)計(jì)的其他不幸的要求之一是需要代碼的安全性,以防止軟件盜版。這里的 STM32 FLASH 可以通過調(diào)試端口鎖定對(duì) Flash 讀的訪問??梢宰x保護(hù)的同時(shí),F(xiàn)lash 存儲(chǔ)器還有寫保護(hù)功能,以

24、防止不受信任的代碼從中斷向量表插入。進(jìn)一步的寫保護(hù)功能,可以在剩余FLASH存儲(chǔ)器部分啟用。STM32 還有一個(gè)實(shí)時(shí)時(shí)鐘和一個(gè)小面積電池供電的 SRAM。此區(qū)域具有防篡改輸入,可以在狀態(tài)變化時(shí)觸發(fā)中斷。此外,防篡改的內(nèi)容。 將自動(dòng)清除電池備份 SRAM 1.2.4 軟件開發(fā)如果你已經(jīng)在使用基于 ARM 的微控制器,有個(gè)好消息是,你的開發(fā)工具已經(jīng)支持 Thumb-2 指令集和 Cortex 系列。最壞的情況是需要軟件升級(jí),以獲得必要的支持。 ST 還提供了外設(shè)驅(qū)動(dòng)程序庫,USB 開發(fā)庫作為一個(gè) ANSI C 庫,源代碼與先前他們公布的 STR7 庫和 STR9 微控制器的庫兼容。這些庫的移植已經(jīng)

25、支持流行的編譯器工具。同樣,許多開源和商業(yè)的RTOS 和中間件(TCP/ IP,文件系統(tǒng)等)可用于 Cortex 系列。在 Cortex-M3 還配備了一個(gè)全新的調(diào)試系統(tǒng) CoreSight。訪問 CoreSight 系統(tǒng)是通過一個(gè)支持標(biāo)準(zhǔn) JTAG 的接口或串行線(2 線) 接口來訪問。STM32 的 CoreSight 系統(tǒng)提供調(diào)試運(yùn)行控制的同時(shí),還提供了一個(gè)數(shù)據(jù)觀察點(diǎn)和一個(gè)指令跟蹤功能。該指令跟蹤模塊可以發(fā)送指定的應(yīng)用程序信息到調(diào)試工具。 這可以提供擴(kuò)展的調(diào)試信息,可以用來在軟件測(cè)試期間調(diào)試。 1.2.5 STM32 系列STM32 系列有四個(gè)不同的分支。這些被歸類為增強(qiáng)型,基本型和 U

26、SB 型設(shè)備.ST 也宣布了第四組型號(hào)被稱為互聯(lián)型。在用戶手冊(cè)中,增強(qiáng)型,USB 型和基本型也被稱為高,中,低密度設(shè)備。在增強(qiáng)型,基本型和 USB 型設(shè)備中,內(nèi)存大的比內(nèi)存小的嵌入外設(shè)更豐富。因此, 有三個(gè)內(nèi)存容量范圍和相應(yīng)的外設(shè)集。低密度設(shè)備的 FLASH 容量大小為 16KB 到 32KB 并有最小的存儲(chǔ)集。中密度設(shè)備的 Flash 存儲(chǔ)器容量大小為 64KB 到 128KB,而高密度器件 FLASH 容量大小為 256KB 到 512KB,并且具有最豐富的外設(shè)集。 11 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 www.stm32bbs.co

27、m基本型是入門級(jí)的 STM32 系列產(chǎn)品線,運(yùn)行在 36MHz 并具有簡(jiǎn)單的外設(shè)集。增強(qiáng)型運(yùn)行在 72MHz,并提供更多的外圍設(shè)備。 USB 型添加一個(gè) USB device,用于對(duì)成本敏感的 USB 應(yīng)用程序。 ST 還宣布STM32 系列的一個(gè)新的分支稱為互聯(lián)型。該系列給 STM32 帶來了先進(jìn)的通信外設(shè)包括一個(gè)雙重角色的 USB 控制器和以太網(wǎng) MAC。這個(gè)雙重角色 USB 可以作為 USB 設(shè)備控制器或 USB 主機(jī)/ OTG 控制器。以太網(wǎng) MAC 還包括 IEEE1588,支持實(shí)時(shí)以太網(wǎng)協(xié)議。重要的是,所有不同型號(hào)之間的封裝類型和引腳布局是兼容的。這使得不同型號(hào)的 STM32 互換

28、,只需要較少的軟件工作量,而無需重畫 PCB。 12 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 2Cortex 概述正如我們?cè)诤?jiǎn)介中所看到的,Cortex 處理器是從 ARM 繼承的下一代嵌入式核心。和早期的 ARM CPU 有點(diǎn)不同的是,Cortex 是一個(gè)完整的處理器核心,由 Cortex CPU 和周圍的一整套系統(tǒng)外設(shè)組成,提供了一個(gè)嵌入式系統(tǒng)的核心。為了滿足各種各樣的嵌入式系統(tǒng)的需求, Cortex 處理器提供了各種應(yīng)用配置系列。這些系列由 Cortex 后的字母名稱表示。這三個(gè)系列如下: Cortex-A

29、系列,支持復(fù)雜的操作系統(tǒng)和用戶應(yīng)用的應(yīng)用處理器系列。支持 ARM,Thumb 和Thumb-2 指令集。 Cortex-R 系列,實(shí)時(shí)系統(tǒng)應(yīng)用系列。支持 ARM,Thumb 和Thumb-2 指令集。 Cortex-M 系列,為低成本應(yīng)用進(jìn)行了優(yōu)化的控制器系列。 僅支持 Thumb-2 指令集。 Cortex 名稱后面的數(shù)字是指對(duì)應(yīng)的性能水平,1 為最低,而 8 是最高的。目前在 Cortex-M 系列中性能水平最高的級(jí)別是 3。STM32 是基于 Cortex-M3 處理器的基礎(chǔ)上的。 2.1 ARM 體系結(jié)構(gòu)版本ARM 也表示對(duì)自己的處理器與體系結(jié)構(gòu)的版本有點(diǎn)混亂。 (這里用于 ARMv6

30、,ARMv7 體系等)Cortex M3 的體系結(jié)構(gòu)版本是 ARMv7 M. Cortex-M3 處理器是基于 ARMv7 體系結(jié)構(gòu)并能夠執(zhí)行 Thumb-2 指令集的。 因此, Cortex-M3 的文檔包括 Cortex-M3 技術(shù)參考手冊(cè)和 ARMv7 體系結(jié)構(gòu)參考手冊(cè)。 這些文件可以從 ARM 網(wǎng)站 上下載。 13 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 2.2 Cortex 處理器和 Cortex CPU在整個(gè)這本書的其余部分中,術(shù)語 Cortex 處理器和 Cortex CPU

31、將被用來區(qū)分完整的Cortex 嵌入式內(nèi)核(STM32)和內(nèi)部 RISC CPU。在下一節(jié)中,我們將著眼于 Cortex CPU 的關(guān)鍵特性,然后再 Cortex 處理器(STM32)的系統(tǒng)外圍設(shè)備。 2.3 Cortex CPU在 Cortex 處理器的核心,是一個(gè) 32 位的RISC CPU。該 CPU 具有一個(gè)簡(jiǎn)化版本的 ARM7 / 9 編程模型,但具有更豐富的指令集,具有良好的整數(shù)支持,更好的位操作和硬實(shí)時(shí)性能。 2.3.1 流水線Cortex CPU 可以在一個(gè)周期內(nèi)執(zhí)行大多數(shù)指令。和 ARM7 和 ARM9 的 CPU 一樣,這是由一個(gè)三級(jí)流水線來實(shí)現(xiàn)的。 當(dāng)一條指令在被執(zhí)行時(shí),

32、下一條指令被譯碼和第三條指令被從存儲(chǔ)器中取出。這在正常 順序執(zhí)行的情況下工作得非常好,但是當(dāng)遇到分支時(shí),流水線必須進(jìn)行刷新和重填,才可以 繼續(xù)執(zhí)行代碼。在 ARM7 和 ARM9 CPU 中,分支在代碼的性能上是非常耗費(fèi)的。在 Cortex CPU 中三級(jí)流水線效率是通過分支預(yù)測(cè)來增強(qiáng)的。這意味著達(dá)到,條件分支指令到來時(shí),預(yù)測(cè)取 指動(dòng)作被執(zhí)行,使兩個(gè)分支的指令都可以被執(zhí)行,而不會(huì)導(dǎo)致性能的下降。最壞的情況是一 個(gè)間接分支的預(yù)測(cè)取指不能被執(zhí)行,而這時(shí)唯一的辦法是,沖洗流水線。雖然流水線是 Cortex CPU 的整體性能的關(guān)鍵,但在應(yīng)用程序代碼上沒有什么特別需要考慮的。 2.3.2 編程模型Co

33、rtex CPU 是一個(gè)有加載和存儲(chǔ)體系結(jié)構(gòu)的 RISC 處理器。為了執(zhí)行數(shù)據(jù)處理指令,操作數(shù)必須被加載到一個(gè)中央寄存器,數(shù)據(jù)操作必須在這些寄存器上執(zhí)行,并且把結(jié)果回存到 內(nèi)存上。 14 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 因此,所有的程序活動(dòng)重點(diǎn)圍繞 CPU 寄存器。這些寄存器包括 16 個(gè) 32 位寄存器。寄存器 R0-R12 是簡(jiǎn)單的寄存器可以用來存放程序變量。寄存器 R13-R15 在Cortex CPU 內(nèi)具有特殊的功能。寄存器 R13 用作堆棧指針。這個(gè)寄存器是分塊的,它允許在 Cortex CPU

34、 有兩種操作模式(線程模式和處理模式),每種操作模式都有自己獨(dú)立的??臻g。這通常用于 RTOS中,即可以在保護(hù)模式下運(yùn)行“系統(tǒng)”代碼。Cortex CPU 有兩個(gè)堆棧稱為主堆棧和進(jìn)程堆棧。接下來的寄存器 R14 是鏈接寄存器。該寄存器是用來存儲(chǔ)程序調(diào)用時(shí)的返回地址。這使得Cortex CPU 可以快速地進(jìn)入和退出程序。如果你的代碼調(diào)用幾級(jí)子程序,編譯器將自動(dòng)把R14 存儲(chǔ)在棧上。最后的寄存器R15 是程序計(jì)數(shù)寄存器,因?yàn)樗彩侵醒爰拇嫫鞯囊徊糠郑?所以它也可以像其他寄存器一樣進(jìn)行讀寫操作。 XPSR除了中央寄存器之外,還有有一個(gè)單獨(dú)的寄存器,程序狀態(tài)寄存器。它不是中央寄存器的一

35、部分,它僅能夠通過兩個(gè)專用的指令 MRS 和MSR 進(jìn)行操作。xPSR 包含了一些影響 Cortex CPU 執(zhí)行的字段。 xPSR 的寄存器也可以通過三個(gè)特殊的別名 APSR、IPSR 和 EPSR,對(duì) xPSR 子范圍內(nèi)的位進(jìn)行訪問。前 5 位是條件代碼標(biāo)志,別名是應(yīng)用程序狀態(tài)寄存器(Application Program Status Register)。前四個(gè)條件代碼標(biāo)志 N,Z,C,V(負(fù)數(shù),零,進(jìn)位和溢出)將根據(jù)數(shù)據(jù)處理指令的結(jié)果被設(shè)置或清零。Q 位是由 DPS 飽和數(shù)學(xué)指令使用,用來表明變量已經(jīng)達(dá)到它的最大值或最小值。和 ARM 32 位指令集一樣,某些 Thumb-2 指令僅當(dāng)

36、滿足應(yīng)用程序狀態(tài)寄存器的條件碼標(biāo)志狀態(tài)時(shí)才被執(zhí)行。如果該指令條件碼不匹配,則該指令通過流水線時(shí)作 為 NOP 指令處理。這將保證指令順利通過流水線,并最大限度地減少流水線沖洗。在 Cortex CPU 中, 執(zhí)行程序狀態(tài)寄存器(Execution Program Status Register)使得這一技術(shù)得以擴(kuò)展。這個(gè)是位 26 - 8 的 xPSR 的別名。這包含三個(gè)區(qū):“IF then”區(qū),“中斷-可繼續(xù)指令區(qū)”,和Thumb 指令狀態(tài)區(qū)。Thumb-2 指令集在執(zhí)行小塊的“IF then”塊指令時(shí),有一個(gè)有 效的方法。當(dāng)條件測(cè)試為真,它可以在“IF then”位設(shè)置一個(gè)值,告訴 CPU

37、 可以執(zhí)行到下 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 面四個(gè)指令。如果條件測(cè)試為假,這些指令會(huì)在通過流水線時(shí)作為 NOP 指令處理。因此,一個(gè)典型的流水線 C 將被編碼如下: If (r0 =0)CMP r0,#0 ITTEE EQThen r0 = *r1;compare r0 to 0;if true execute the next two instructions+2;LDR r0,r1ADDr0,#2;load contents of memory location into r0;add 2大多數(shù) T

38、humb-2 指令在一個(gè)周期內(nèi)被執(zhí)行,而有些指令(如多寄存器加載和存儲(chǔ)指令) 卻需要多個(gè)周期。因此,Cortex CPU 可以有一個(gè)明確的中斷響應(yīng)時(shí)間,這些指令必須是可以被中斷的。當(dāng)一條多寄存器加載/存儲(chǔ)指令被提前終止時(shí),中斷繼續(xù)指令區(qū)將存儲(chǔ)將要作的下一個(gè)寄存器的編號(hào)。因此,一旦中斷服務(wù)程序完成后,多寄存器加載/存儲(chǔ)指令可 以繼續(xù)執(zhí)行。最后的 Thumb 指令狀態(tài)區(qū)是繼承自早期的 ARM 處理器的。此區(qū)表示,目前正在被 CPU 執(zhí)行的是 ARM 指令集還是 Thumb 指令集。在 Cortex-M3,該位始終設(shè)置為 1。最后, 中斷狀態(tài)寄存器(Interrupt Status Register

39、s)包含當(dāng)前被激活的中斷編號(hào)。 2.3.3 CPU 工作模式雖然 Cortex 處理器是一個(gè)低門數(shù),速度快,易于使用的微控制器核心,但它已被設(shè)計(jì)為支持使用實(shí)時(shí)操作系統(tǒng)。 Cortex 處理器有兩種操作模式:線程模式和處理模式。當(dāng) CPU 在非中斷背景模式執(zhí)行時(shí),它將運(yùn)行在線程模式下,當(dāng)執(zhí)行異常時(shí),它將切換到處理模式。 此外,Cortex CPU 可以在或非模式下執(zhí)行代碼。在模式下,CPU 可以訪問完整的指令集。在非模式下某些指令將被禁用(如允許訪問 xPSR 和它的別名的 MRS 和 MSR 指令)。此外, Cortex 處理器系統(tǒng)控制空間的大部分寄存器也將被禁用。堆棧的使用也可以被配置。主堆

40、棧(R13)可以用在線程模式和處理模式這兩種模式。另外,處理模式模式 也可以被配置為使用進(jìn)程堆棧(R13 bank 寄存器)。 Cortex-M3 可用在一個(gè)“平”的簡(jiǎn)單模式。它也被設(shè)計(jì)為支持實(shí)時(shí)操作系統(tǒng)。它具有處理模式和線程模式,可以被配置為使用主?;蜻M(jìn)程棧并有Cortex 系統(tǒng)控制寄存器。 訪問 16 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 復(fù)位后 Cortex 處理器將運(yùn)行在一個(gè)“平”的配置。線程模式和處理模式這兩種模式都是運(yùn)行在模式下,所以對(duì)任何處理器資源的訪問都沒有任何限制。線程模式和處理模式 都可以使用

41、主堆棧。為了開始執(zhí)行,只需要對(duì) Cortex 處理器的復(fù)位向量和堆棧的開始地址進(jìn)行配置,然后你就可以開始執(zhí)行你的應(yīng)用程序 C 代碼了。但是,如果你使用的是 RTOS 或正在開發(fā)一種安全攸關(guān)的應(yīng)用程序,該芯片可以被用在高級(jí)模式配置,即處理模式(異常和RTOS)運(yùn)行在模式下,使用主堆棧,而在非訪問的線程模式下運(yùn)行應(yīng)用程序代碼, 使用進(jìn)程堆棧。這種系統(tǒng)代碼和應(yīng)用程序代碼進(jìn)行分區(qū)的方式使得應(yīng)用程序代碼中的錯(cuò)誤不 會(huì)導(dǎo)致 RTOS 。 2.3.4 Thumb-2 指令集ARM7 和 ARM9 CPU 可以同時(shí)執(zhí)行兩個(gè)指令集:32 位的 ARM 指令集和 16 位的 Thumb 指令集。這允許開發(fā)人員通過

42、選擇不同的指令集來優(yōu)化其程序:32 位指令的速度和 16 位指令的代碼壓縮。Cortex CPU 執(zhí)行Thumb-2 指令集,這是一個(gè)混合的 16 位和 32 位指令。Thumb-2 指令集提供了32 位ARM 指令集26代碼密度的提高和16 位Thumb 指令集25性能的提升。Thumb2 指令集具有一些改進(jìn)的可以在一個(gè)單周期內(nèi)執(zhí)行的乘法指令和大約需要 2 - 7 周期 的硬件除法器。 Cortex 處理器 benchmarks 提供 1.2 DMIPS / MHz 的性能水平,即是每指令1.2 個(gè)時(shí)鐘周期。 17 百為技術(shù)官方網(wǎng)店 技

43、術(shù)支持論壇 Thumb-2 指令集也有改進(jìn)的分支指令,包括測(cè)試和比較,IF then 條件執(zhí)行塊和數(shù)據(jù)操作的字節(jié)順序和字節(jié)和半字提取指令。作為一個(gè) RISC 處理器,Cortex CPU 還具有豐富的專門為 C 編譯器目標(biāo)設(shè)計(jì)的指令集。 Cortex-M3 的一個(gè)典型項(xiàng)目,將完全由 ANSI C 編寫,使 用最少的非 ANSI 關(guān)鍵字,并且只有異常向量表是由匯編語言編寫的。 2.3.5 存儲(chǔ)器映射Cortex-M3 處理器 一個(gè)標(biāo)準(zhǔn)的微控制器核心,并具有一個(gè)明確定義的內(nèi)存映射。盡管有多個(gè)內(nèi)部總線,這個(gè)內(nèi)存映射是線性的 4G 字節(jié)的地址空間。 Cortex-M3

44、定義了一個(gè)固定的 4GB 內(nèi)存映射,指定了代碼區(qū)、SRAM 區(qū)、外設(shè)區(qū)、外部存儲(chǔ)器或設(shè)備和 Cortex 系統(tǒng)寄存器的區(qū)域范圍。此內(nèi)存映射適用于所有基于 Cortex 的設(shè)備。 第一個(gè) 1GB 的內(nèi)存空間被分為代碼區(qū)和SRAM 區(qū)。代碼空間被優(yōu)化為從I-Code 總線執(zhí)行。同樣,SRAM 由 D-Code 總線訪問。雖然代碼可以從 SRAM 加載和執(zhí)行,但指令從系統(tǒng)總線提取,這將會(huì)產(chǎn)生額外的等待狀態(tài)。這很可能是因?yàn)閺?SRAM 上運(yùn)行,比從位于代碼區(qū)的片上FLASH 存儲(chǔ)器上運(yùn)行代 速度要慢。接下來的 0.5GB 的存儲(chǔ)空間是片上外設(shè)區(qū)。所有由微控制器供應(yīng)商提供的用戶外設(shè)將設(shè)在這個(gè)區(qū)域。SRA

45、M 和外設(shè)區(qū)中的第一個(gè) 1M 字節(jié)是可位尋址的, 使用的技術(shù)稱為位帶技術(shù)。由于 STM32 所有的 SRAM 和所有用戶外設(shè)位于這些區(qū)域,STM32所有的內(nèi)存位置都可以用一個(gè)字或位的方式進(jìn)行操作的。接下來的 2GB 的地址空間被分配給 外部 SRAM 和外部設(shè)備。最后的 0.5 GB 被分配給內(nèi)部的 Cortex 處理器外設(shè) 一個(gè)給供應(yīng)商 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 自定義 Cortex 處理器增強(qiáng)功能的區(qū)。所有 Cortex 處理器的寄存器在所有基于 Cortex 的微控制器中有固定地址。這使得代碼很

46、容易被移植到不同的 STM32 型號(hào)之間以及其他廠商的Cortex 微控制器上。只需要學(xué)習(xí)一個(gè)處理器,只需要投資一種工具集,就有大量的代碼可 以在廣泛的微控制器中重用。 2.3.6 非對(duì)齊的內(nèi)存訪問ARM7 和ARM9 的指令集能夠訪問字節(jié),有符號(hào)和無符號(hào)半字和字變量。這使得 CPU 自然地支持整數(shù)變量,而不需要那種通常在 8 位和 16 位微控制器上需要的軟件庫的支持。但是, 早期的 ARM 處理器的缺點(diǎn)是,他們只能做字或半字對(duì)齊訪問。這限制了編譯連接器將數(shù)據(jù)存放到SRAM 的能力和一些有效的 SRAM 空間將被浪費(fèi)。 (這可以是高達(dá) 25的,取決于所使 用的變量的組合。) Cortex-M

47、3 可以使用未對(duì)齊的內(nèi)存訪問,這確保 SRAM 是被有效使用的。 Cortex CPU 有字,半字和字節(jié)尋址模式,但能夠?qū)Ψ菍?duì)齊的內(nèi)存進(jìn)行訪問。這使得編譯鏈接器可以完全自由地在內(nèi)存中安排程序數(shù)據(jù)。Cortex CPU 額外的位帶支持允許程序的 標(biāo)志被包裝成一個(gè)字或半字變量,而不是每個(gè)標(biāo)志使用一個(gè)字節(jié)。 2.3.7 位帶早期的ARM7 和 ARM9 的CPU 只能在 SRAM 和外設(shè)存儲(chǔ)器位置上通過使用 AND 和 OR 指令執(zhí)行位操作。這需要一個(gè)讀-修改-寫操作,在設(shè)置和清除位需要的周期數(shù)量和對(duì)每一個(gè)位操作 所需的整體代碼空間方面來說,這是很昂貴的。 19 百為技術(shù)官方網(wǎng)店 http:/bai

48、技術(shù)支持論壇 為了克服這個(gè)限制,將有可能引入一個(gè)專用的位設(shè)置和清除指令,或者一個(gè)完整的布爾 處理器,但是這將會(huì)增加 Cortex CPU 的大小和復(fù)雜性。取而代之的是,一個(gè)叫位帶的技術(shù)允許直接位操作外設(shè)區(qū)和 SRAM 區(qū)內(nèi)存空間,而不需要其他任何特別指令的介入。Cortex 存儲(chǔ)器映射中的位尋址區(qū)域是由位帶區(qū)(容量高達(dá) 1M byte 的實(shí)際存儲(chǔ)器或外設(shè)寄存器)和占用內(nèi)存映射32M byte 的位帶別名區(qū)組成的。位帶技術(shù)把位帶區(qū)域中的一個(gè)位映射到別名區(qū)中的一個(gè)字地址。因此,通過設(shè)置和清除別名區(qū)字地址,我們可以設(shè)置和清除真正內(nèi)

49、存中的 位。 位帶支持 SRAM 區(qū)和外設(shè)區(qū)的第一個(gè) 1M 字節(jié)。這涵蓋了 STM32 的所有資源。 這使得我們能夠執(zhí)行獨(dú)立的位操作,而不需要特別的指令,并使 Cortex 核心保持了盡可能小的整體尺寸。在實(shí)踐中,我們需要計(jì)算一個(gè)在外設(shè)區(qū)或 SRAM 區(qū)中指定內(nèi)存位置的位 帶別名地址。計(jì)算別名地址的公式如下: 位帶別名區(qū)的地址位帶字偏移 =位帶別名區(qū)的基地址+位帶字偏移位帶基地址偏移*32+位號(hào)*4 這比一開始看起來要容易得多。對(duì)于一個(gè)實(shí)際的例子,GPIO 輸出數(shù)據(jù)寄存器被設(shè)計(jì)為可以設(shè)置和清除單個(gè) IO 線。端口 B 輸出寄存器的物理地址是 0x40010C0C。在這個(gè)例子中, 我們可以使用上

50、面的公式來設(shè)置和清除這個(gè)字的第 8 位。 字地址 外設(shè)位帶基地址 外設(shè)位帶別名基地址位帶基地址偏移 位帶字偏移 位別名地址 =0x40010C0C 0x40000000 0x42000000 0x40010C0C-0x40000000=10C0C (0x10C0C*32)+(8*4)=0x2181A0 0x42000000+0x2181A0=0x422181A0 現(xiàn)在,我們可以用下面的 C 代碼來創(chuàng)建一個(gè)指針指向這個(gè)地址:#definePortBbit8 (*(volatile unsigned long *) 0x422181A0 )然后,可以使用這個(gè)指針來設(shè)置和清除IO端口位: PortB

51、bit8 = 1;對(duì)應(yīng)產(chǎn)生下面的匯編指令: /led onMOVSLDRr0,#0x01r1,pc,#10420 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 STRr0,r1,#0x00熄滅指示燈: PortBbit8 = 0;對(duì)應(yīng)生成下面的匯編指令: /led offMOVS LDRSTRr0,#0x00 r1,pc,#88r0,r1,#0x00設(shè)置和清除操作占用3 個(gè)16 位指令,STM32 運(yùn)行在72 MHz 時(shí)這些指令的執(zhí)行時(shí)間為80ns。在外設(shè)和 SRAM 位帶區(qū)域的任何字,也可以直接字存取,這樣我們就可以使

52、用更傳統(tǒng)的 AND 和 OR 方法進(jìn)行同樣的設(shè)置和清除操作: GPIOB-ODR|= 0x00000100;/LED onLDR ADDS LDR ORR LDRSTRr0,pc,#68 r0,r0,#0x08 r0,r0,#0x00 r0,r0,#0x100 r1,pc,#64r0,r1,#0xC0CGPIOB-ODR&=!0x00000100;/LED offLDR ADDS LDR MOVS LDRSTRr0,pc,#40 r0,r0,#0x08 r0,r0,#0x00 r0,#0x00 r1,pc,#40r0,r1,#0xC0C這種情況下每個(gè)設(shè)置和清除操作需要一個(gè)混合的 16 位和 3

53、2 位操作,每個(gè)操作至少需要14 個(gè)字節(jié),并且在相同的時(shí)鐘頻率下最少要 180ns。如果你考慮在一個(gè)典型的嵌入式應(yīng)用程序中設(shè)置和清除大量外設(shè)寄存器的位,并在 SRAM 上使用信號(hào)量和標(biāo)志時(shí)位帶帶來的影響, 你會(huì)很清楚要明顯節(jié)省代碼空間和執(zhí)行時(shí)間,而這些都在 STM32 的頭文件幫你處理好了。 庫函數(shù)例程中相關(guān)代碼: 位帶別名地址計(jì)算公式為: bit_word_addr = bit_band_base + (byte_offset x 32) + (bit_number x 4) 其中 bit_word_addr 是位帶別名地址,bit_band_base 是位帶別名區(qū)基地址,byte_offs

54、et 是在位帶區(qū)的偏移 = 位帶區(qū)地址 - 位帶區(qū)基地址,bit_number 表示位帶區(qū)地址中的第幾位。 #define Var_ResetBit_BB(VarAddr, BitNumber) (*(vu32 *) (RAM_BB_BASE | (VarAddr(BitNumber) 2) = 0)- RAM_BASE) 5)|#define Var_SetBit_BB(VarAddr, BitNumber) (*(vu32 *) (RAM_BB_BASE | (VarAddr(BitNumber) 2) = 1)- RAM_BASE) 5)|#define Var_GetBit_BB(Va

55、rAddr, BitNumber)21 百為技術(shù)官方網(wǎng)店 技術(shù)支持論壇 (*(vu32 *) (RAM_BB_BASE | (VarAddr - RAM_BASE) 5) |(BitNumber) 2)2.4 Cortex 處理器2.4.1 總線Cortex-M3 處理器具有一個(gè)哈佛架構(gòu),具有獨(dú)立的代碼和數(shù)據(jù)總線。這些分別被稱為ICode 總線和 DCode 總線。這些總線都可以訪問地址范圍 0X00000000 - 0x1FFFFFFF 的代碼和數(shù)據(jù)。另外,系統(tǒng)總線是用來訪問地址范圍為 0x200000000 - 0xDFFFFFFF 和 0xE0100000 - 0xFFFFFFFF 的 Cortex 系統(tǒng)控制空間的。Cortex 的片上調(diào)試系統(tǒng)另外有一個(gè)總線結(jié)構(gòu)稱為 專用外設(shè)總線。 2.4.2 總線矩陣系統(tǒng)總線和數(shù)據(jù)總線是通過一組由高速總線排列組成的一個(gè)總線矩陣來連接到外部微控制器的。這使得 Cortex 總線和其他外部總線主設(shè)備(如 DMA),到片上資源(如 SRAM 和外設(shè))之間有多個(gè)并行的路徑。如果兩個(gè)主機(jī)(即 Co

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論