![第1章ARM Cortex-M3內(nèi)核結(jié)構(gòu)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/4adc6aa7-470b-4eb6-9cf4-4e3e1b1d30ce/4adc6aa7-470b-4eb6-9cf4-4e3e1b1d30ce1.gif)
![第1章ARM Cortex-M3內(nèi)核結(jié)構(gòu)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/4adc6aa7-470b-4eb6-9cf4-4e3e1b1d30ce/4adc6aa7-470b-4eb6-9cf4-4e3e1b1d30ce2.gif)
![第1章ARM Cortex-M3內(nèi)核結(jié)構(gòu)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/4adc6aa7-470b-4eb6-9cf4-4e3e1b1d30ce/4adc6aa7-470b-4eb6-9cf4-4e3e1b1d30ce3.gif)
![第1章ARM Cortex-M3內(nèi)核結(jié)構(gòu)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/4adc6aa7-470b-4eb6-9cf4-4e3e1b1d30ce/4adc6aa7-470b-4eb6-9cf4-4e3e1b1d30ce4.gif)
![第1章ARM Cortex-M3內(nèi)核結(jié)構(gòu)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/4adc6aa7-470b-4eb6-9cf4-4e3e1b1d30ce/4adc6aa7-470b-4eb6-9cf4-4e3e1b1d30ce5.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第1章 ARM Cortex-M3內(nèi)核結(jié)構(gòu)1.1 ARM Cortex-M3內(nèi)核簡(jiǎn)介內(nèi)核簡(jiǎn)介l 簡(jiǎn)單來(lái)說(shuō),如果把單片機(jī)比作人,內(nèi)核就相當(dāng)于人的大腦簡(jiǎn)單來(lái)說(shuō),如果把單片機(jī)比作人,內(nèi)核就相當(dāng)于人的大腦,耳、鼻、喉、嘴巴、眼睛、胳膊、腿、手、腳等就相當(dāng),耳、鼻、喉、嘴巴、眼睛、胳膊、腿、手、腳等就相當(dāng)于外設(shè)。外圍是指單片機(jī)外接器件的一個(gè)行業(yè)術(shù)語(yǔ);內(nèi)核于外設(shè)。外圍是指單片機(jī)外接器件的一個(gè)行業(yè)術(shù)語(yǔ);內(nèi)核和外設(shè)是單片機(jī)的組成部分,外圍則是單片機(jī)的外部連接和外設(shè)是單片機(jī)的組成部分,外圍則是單片機(jī)的外部連接器件的總稱(chēng)。器件的總稱(chēng)。l 任何一款單片機(jī)都離不開(kāi)內(nèi)核,同一個(gè)內(nèi)核,外掛不同的任何一款單片機(jī)都離不開(kāi)內(nèi)核
2、,同一個(gè)內(nèi)核,外掛不同的外設(shè),就組成了不同型號(hào)的單片機(jī);外設(shè),就組成了不同型號(hào)的單片機(jī);STM32F103的一系列的一系列單片機(jī)都是單片機(jī)都是Cortex-M3內(nèi)核,根據(jù)不同的需要,掛接不同內(nèi)核,根據(jù)不同的需要,掛接不同的外設(shè)后產(chǎn)生了不同的的外設(shè)后產(chǎn)生了不同的IC。不同的內(nèi)核外掛外設(shè)后同樣又。不同的內(nèi)核外掛外設(shè)后同樣又組成了不同系列不同型號(hào)的單片機(jī)。組成了不同系列不同型號(hào)的單片機(jī)。l ARM內(nèi)核的特點(diǎn)內(nèi)核的特點(diǎn):l 1.Thumb-2指令集架構(gòu)(指令集架構(gòu)(ISA)的子集,包含所有基本的)的子集,包含所有基本的16位和位和32位位Thumb-2指令;指令;l 2.哈佛處理器架構(gòu),在加載哈佛處理
3、器架構(gòu),在加載/存儲(chǔ)數(shù)據(jù)的同時(shí)能夠執(zhí)行指存儲(chǔ)數(shù)據(jù)的同時(shí)能夠執(zhí)行指令取指,周期大大縮短,執(zhí)行效率更加高效;令取指,周期大大縮短,執(zhí)行效率更加高效;l 3.帶分支預(yù)測(cè)的三級(jí)流水線(xiàn);帶分支預(yù)測(cè)的三級(jí)流水線(xiàn);l 4.運(yùn)算能力強(qiáng),具有單時(shí)鐘周期硬件運(yùn)算能力強(qiáng),具有單時(shí)鐘周期硬件32位乘法、除法;位乘法、除法;l 5.硬件除法;硬件除法;l 6.Thumb狀態(tài)和調(diào)試狀態(tài);狀態(tài)和調(diào)試狀態(tài);l 7.處理模式和線(xiàn)程模式;處理模式和線(xiàn)程模式;l 8.ISR的低延遲進(jìn)入和退出;的低延遲進(jìn)入和退出;l 9.可中斷可中斷-可繼續(xù)(可繼續(xù)(interruptible-continued)的)的LDM/STM、PUSH/P
4、OP;l 10.支持支持ARMv6類(lèi)型類(lèi)型BE8/LE;l 11.支持支持ARMv6非對(duì)齊訪(fǎng)問(wèn)。非對(duì)齊訪(fǎng)問(wèn)。1.2 處理器的組件處理器的組件l 圖圖1.1顯示了顯示了Cortex-M3處理器處理器的結(jié)構(gòu)的結(jié)構(gòu)圖1.1 Cortex-M3內(nèi)核組件方框圖l MPU和和ETM并不是在所以的并不是在所以的M3內(nèi)核中都存在,這兩個(gè)不內(nèi)核中都存在,這兩個(gè)不是必須組件。是必須組件。l AHB(Advanced High Performance Bus)就是高性能高級(jí)總線(xiàn)就是高性能高級(jí)總線(xiàn),一般速度最快;,一般速度最快;l APB(Advanced Peripheral Bus)就是外圍總線(xiàn),一般通過(guò)轉(zhuǎn)就是外
5、圍總線(xiàn),一般通過(guò)轉(zhuǎn)換橋橋掛在換橋橋掛在AHB總線(xiàn)上,速度一般低于總線(xiàn)上,速度一般低于AHB總線(xiàn)??偩€(xiàn)。l 處理器的取指,運(yùn)算等一般都是掛在處理器的取指,運(yùn)算等一般都是掛在AHB總線(xiàn)上邊,保證總線(xiàn)上邊,保證速度最快;速度最快;GPIO,ADC等外設(shè)一般掛在等外設(shè)一般掛在APB總線(xiàn)上;總線(xiàn)上;l I-Code總線(xiàn):總線(xiàn):I指的就是指令指的就是指令I(lǐng)nstruction,I-Code就是就是32位指位指令總線(xiàn),每次取令總線(xiàn),每次取32位指令,所以在位指令,所以在Thumb狀態(tài)下,一次可狀態(tài)下,一次可以取以取2條指令。條指令。l D-Code總線(xiàn):總線(xiàn):D指的就是數(shù)據(jù)指的就是數(shù)據(jù)Data,D-Code
6、就是數(shù)據(jù)總線(xiàn)就是數(shù)據(jù)總線(xiàn),同樣也是,同樣也是32位寬度;盡管我們?cè)陂_(kāi)發(fā)中可以使用非位寬度;盡管我們?cè)陂_(kāi)發(fā)中可以使用非4字字節(jié)對(duì)齊方式,但是在數(shù)據(jù)總線(xiàn)取數(shù)據(jù)時(shí)候一定是節(jié)對(duì)齊方式,但是在數(shù)據(jù)總線(xiàn)取數(shù)據(jù)時(shí)候一定是4字節(jié)對(duì)字節(jié)對(duì)齊,因此,齊,因此,32位的數(shù)據(jù)變量在處理過(guò)程中更加高效。位的數(shù)據(jù)變量在處理過(guò)程中更加高效。l 系統(tǒng)總線(xiàn):負(fù)責(zé)指令和數(shù)據(jù)的傳送。也是系統(tǒng)總線(xiàn):負(fù)責(zé)指令和數(shù)據(jù)的傳送。也是32位寬度。位寬度。l 外部私有外設(shè)總線(xiàn):這是一條基于外部私有外設(shè)總線(xiàn):這是一條基于APB總線(xiàn)的總線(xiàn)的32位寬度總位寬度總線(xiàn),負(fù)責(zé)外設(shè)之間的訪(fǎng)問(wèn)。線(xiàn),負(fù)責(zé)外設(shè)之間的訪(fǎng)問(wèn)。l 調(diào)試端口總線(xiàn):作為調(diào)試端口,方便用戶(hù)開(kāi)
7、發(fā)調(diào)試。調(diào)試端口總線(xiàn):作為調(diào)試端口,方便用戶(hù)開(kāi)發(fā)調(diào)試。1.3 內(nèi)核寄存器組織內(nèi)核寄存器組織l 如圖如圖1.2所示,所示,Cortex_M3內(nèi)核寄存器分為內(nèi)核寄存器分為16個(gè)通用寄存器個(gè)通用寄存器R0R15和和7個(gè)特殊功能寄存器。個(gè)特殊功能寄存器。1.2 寄存器組織圖l1.3.1 通用寄存器通用寄存器R0-R15l R0R12寄存器:是通用寄存器。在處理器運(yùn)行過(guò)程中,寄存器:是通用寄存器。在處理器運(yùn)行過(guò)程中,寄存數(shù)據(jù)。寄存數(shù)據(jù)。l R13為堆棧指針寄存器:堆棧指針是用于訪(fǎng)問(wèn)堆棧,也即為堆棧指針寄存器:堆棧指針是用于訪(fǎng)問(wèn)堆棧,也即系統(tǒng)的系統(tǒng)的RAM區(qū)。區(qū)。Cortex_M3中采用了兩個(gè)堆棧指針:主
8、堆中采用了兩個(gè)堆棧指針:主堆棧指針(棧指針(MSP)和進(jìn)程堆棧指針()和進(jìn)程堆棧指針(PSP),),R13在任何時(shí)刻在任何時(shí)刻只能是其中一個(gè),默認(rèn)情況為只能是其中一個(gè),默認(rèn)情況為MSP,可以通過(guò)控制寄存器,可以通過(guò)控制寄存器(CONTORL)來(lái)改變。)來(lái)改變。Cortex_M3中堆棧方向是向低地址中堆棧方向是向低地址方向增長(zhǎng),為滿(mǎn)堆棧機(jī)制。堆棧操作是通過(guò)方向增長(zhǎng),為滿(mǎn)堆棧機(jī)制。堆棧操作是通過(guò)PUSH和和POP來(lái)來(lái)完成操作的。完成操作的。l 例如例如MSP當(dāng)前指針指向:當(dāng)前指針指向:0 x2000_000C;R0=0 x00000000。l 執(zhí)行:執(zhí)行:PUSH R0l 此時(shí)此時(shí)MSP指向:指向
9、:0 x2000_0008l 執(zhí)行示意如圖執(zhí)行示意如圖1.3所示。所示。1.3 堆棧操作示意圖堆棧操作示意圖l R14程序連接寄存器(程序連接寄存器(LR):在執(zhí)行分支():在執(zhí)行分支(B)和鏈接()和鏈接(BL)指令或帶有交換分支()指令或帶有交換分支(BX)和鏈接指令()和鏈接指令(BLX)時(shí),)時(shí),PC的返回地址自動(dòng)保存進(jìn)的返回地址自動(dòng)保存進(jìn)LR。比如在子程序調(diào)用時(shí)用保存子。比如在子程序調(diào)用時(shí)用保存子程序的返回地址。程序的返回地址。LR也用于異常返回,但是在這里保存的也用于異常返回,但是在這里保存的是返回后的狀態(tài),不是返回的地址,異常返回是通過(guò)硬件是返回后的狀態(tài),不是返回的地址,異常返回
10、是通過(guò)硬件自動(dòng)出棧彈出之前壓入的自動(dòng)出棧彈出之前壓入的PC完成的。完成的。l R15程序計(jì)數(shù)器(程序計(jì)數(shù)器(PC):是程序運(yùn)行的基礎(chǔ),具有自加的):是程序運(yùn)行的基礎(chǔ),具有自加的功能。該寄存器的位功能。該寄存器的位0始終為始終為0,因此,指令始終與字或半,因此,指令始終與字或半字邊界對(duì)齊。字邊界對(duì)齊。l1.3.2 特殊功能寄存器特殊功能寄存器l 特殊功能寄存器分為程序狀態(tài)寄存器、中斷屏蔽寄存器和特殊功能寄存器分為程序狀態(tài)寄存器、中斷屏蔽寄存器和控制寄存器三類(lèi)??刂萍拇嫫魅?lèi)。l xPSR程序狀態(tài)寄存器:系統(tǒng)級(jí)的處理器狀態(tài)可分為程序狀態(tài)寄存器:系統(tǒng)級(jí)的處理器狀態(tài)可分為3類(lèi),類(lèi),應(yīng)用狀態(tài)寄存器(應(yīng)用
11、狀態(tài)寄存器(APSR)、中斷狀態(tài)寄存器()、中斷狀態(tài)寄存器(IPSR)、執(zhí))、執(zhí)行狀態(tài)寄存器(行狀態(tài)寄存器(EPSR),可組合起來(lái)構(gòu)成一個(gè)),可組合起來(lái)構(gòu)成一個(gè)32位的寄存位的寄存器,統(tǒng)稱(chēng)器,統(tǒng)稱(chēng)xPSR。表表1.1 xPSR寄存器寄存器l xPSR寄存器的各位的功能如寄存器的各位的功能如表表1.2 xPSR寄存器各位功能寄存器各位功能l 中斷屏蔽寄存器:分為三組,分別是中斷屏蔽寄存器:分為三組,分別是PRIMASK、FAULTMASK、BASEPRI。l PRIMASK為片上外設(shè)總中斷開(kāi)關(guān),該寄存器只有位為片上外設(shè)總中斷開(kāi)關(guān),該寄存器只有位0有效有效,當(dāng)該位為,當(dāng)該位為0是響應(yīng)所有外設(shè)中斷;
12、當(dāng)該位為是響應(yīng)所有外設(shè)中斷;當(dāng)該位為1時(shí)屏蔽所有時(shí)屏蔽所有片上外設(shè)中斷。片上外設(shè)中斷。l FAULTMASK寄存器管理系統(tǒng)錯(cuò)誤的總開(kāi)關(guān),該寄存器中有寄存器管理系統(tǒng)錯(cuò)誤的總開(kāi)關(guān),該寄存器中有位位0有效,當(dāng)該位為有效,當(dāng)該位為0時(shí),響應(yīng)所有的異常;為時(shí),響應(yīng)所有的異常;為1屏蔽所有屏蔽所有的異常。的異常。l BASEPRI寄存器用來(lái)屏蔽優(yōu)先級(jí)等于和小于某一個(gè)中斷數(shù)寄存器用來(lái)屏蔽優(yōu)先級(jí)等于和小于某一個(gè)中斷數(shù)值的寄存器。值的寄存器。l 控制寄存器:控制寄存器:CONTROL有兩個(gè)作用,其一用于定義處理器有兩個(gè)作用,其一用于定義處理器特權(quán)級(jí)別,其二用于選擇堆棧指針,如表特權(quán)級(jí)別,其二用于選擇堆棧指針,如
13、表1.3所示。所示。表表1.3 CONTROL寄存器寄存器l CONTROL0:異常情況下,處理器總是處于特權(quán)模式,:異常情況下,處理器總是處于特權(quán)模式,CONTROL0位總是為位總是為0;在線(xiàn)程模式情況下(非異常情況;在線(xiàn)程模式情況下(非異常情況),處理器可以工作在特權(quán)級(jí)也可工作在用戶(hù)級(jí),該位可),處理器可以工作在特權(quán)級(jí)也可工作在用戶(hù)級(jí),該位可為為0或或1。特權(quán)級(jí)下所有的資源都可以訪(fǎng)問(wèn),而用戶(hù)級(jí)下被。特權(quán)級(jí)下所有的資源都可以訪(fǎng)問(wèn),而用戶(hù)級(jí)下被限制的資源不能訪(fǎng)問(wèn),比如限制的資源不能訪(fǎng)問(wèn),比如MPU被限制的資源。被限制的資源。l CONTROL1:為:為0時(shí),只使用時(shí),只使用MSP,此時(shí)用戶(hù)程序
14、和異常,此時(shí)用戶(hù)程序和異常共享同一個(gè)堆棧,處理器復(fù)位后默認(rèn)的也是該模式。為共享同一個(gè)堆棧,處理器復(fù)位后默認(rèn)的也是該模式。為1時(shí),用戶(hù)應(yīng)用程序使用進(jìn)程堆棧時(shí),用戶(hù)應(yīng)用程序使用進(jìn)程堆棧PSP,而中斷任然得使用,而中斷任然得使用主堆棧主堆棧MSP。這種雙堆棧機(jī)制,特別適合在帶有。這種雙堆棧機(jī)制,特別適合在帶有OS(操作(操作系統(tǒng))的環(huán)境下使用,只要系統(tǒng))的環(huán)境下使用,只要OS內(nèi)核在特權(quán)級(jí)下執(zhí)行,而用內(nèi)核在特權(quán)級(jí)下執(zhí)行,而用戶(hù)應(yīng)用程序在用戶(hù)模式下執(zhí)行,就可很好的將代碼隔離互戶(hù)應(yīng)用程序在用戶(hù)模式下執(zhí)行,就可很好的將代碼隔離互不影響。不影響。1.4 處理器模式處理器模式l ARM Cortex-M3支持支
15、持2個(gè)模式和兩個(gè)特權(quán)等級(jí)。如圖個(gè)模式和兩個(gè)特權(quán)等級(jí)。如圖1.4所所示,在嵌入式系統(tǒng)應(yīng)用程序中,程序代碼涉及異常服務(wù)程示,在嵌入式系統(tǒng)應(yīng)用程序中,程序代碼涉及異常服務(wù)程序代碼和非異常服務(wù)程序代碼,這些代碼可以工作在處理序代碼和非異常服務(wù)程序代碼,這些代碼可以工作在處理器特權(quán)級(jí)也可以工作在用戶(hù)級(jí)級(jí),但有區(qū)別。當(dāng)處理器處器特權(quán)級(jí)也可以工作在用戶(hù)級(jí)級(jí),但有區(qū)別。當(dāng)處理器處在線(xiàn)程模式下時(shí),既可以使用特權(quán)級(jí),也可以使用用戶(hù)級(jí)在線(xiàn)程模式下時(shí),既可以使用特權(quán)級(jí),也可以使用用戶(hù)級(jí);另一方面,;另一方面,handler模式總是特權(quán)級(jí)的。在復(fù)位后,處模式總是特權(quán)級(jí)的。在復(fù)位后,處理器進(jìn)入線(xiàn)程模式特權(quán)級(jí)。理器進(jìn)入線(xiàn)程
16、模式特權(quán)級(jí)。圖1.4 操作模式和特權(quán)等級(jí)l 在線(xiàn)程模式用戶(hù)級(jí)下,對(duì)系統(tǒng)控制空間(在線(xiàn)程模式用戶(hù)級(jí)下,對(duì)系統(tǒng)控制空間(SCS,0 xE000E0000 xE000EFFF,包括,包括NVIC、SysTick、MPU以及以及代碼調(diào)試控制所用的寄存器)的訪(fǎng)問(wèn)將被禁止。除此之外代碼調(diào)試控制所用的寄存器)的訪(fǎng)問(wèn)將被禁止。除此之外,還禁止使用,還禁止使用MRS/MSR訪(fǎng)問(wèn),除了訪(fǎng)問(wèn),除了APSR之外的特殊功能之外的特殊功能寄存器。如果操作,則對(duì)于訪(fǎng)問(wèn)特殊功能寄存器的,訪(fǎng)問(wèn)寄存器。如果操作,則對(duì)于訪(fǎng)問(wèn)特殊功能寄存器的,訪(fǎng)問(wèn)操作被忽略;而對(duì)于訪(fǎng)問(wèn)操作被忽略;而對(duì)于訪(fǎng)問(wèn)SCS空間的,將產(chǎn)生錯(cuò)誤??臻g的,將產(chǎn)生錯(cuò)
17、誤。 l 在特權(quán)級(jí)下不管是任何原因產(chǎn)生了任何異常,處理器都將在特權(quán)級(jí)下不管是任何原因產(chǎn)生了任何異常,處理器都將以特權(quán)級(jí)來(lái)運(yùn)行其服務(wù)例程,異常返回后,系統(tǒng)將回到產(chǎn)以特權(quán)級(jí)來(lái)運(yùn)行其服務(wù)例程,異常返回后,系統(tǒng)將回到產(chǎn)生異常時(shí)所處的級(jí)別,同時(shí)特權(quán)級(jí)也可通過(guò)置位生異常時(shí)所處的級(jí)別,同時(shí)特權(quán)級(jí)也可通過(guò)置位CONTROL0來(lái)進(jìn)入用戶(hù)級(jí)。用戶(hù)級(jí)下的代碼不能再試圖修來(lái)進(jìn)入用戶(hù)級(jí)。用戶(hù)級(jí)下的代碼不能再試圖修改改CONTROL0來(lái)回到特權(quán)級(jí)。它必須通過(guò)一個(gè)異常來(lái)回到特權(quán)級(jí)。它必須通過(guò)一個(gè)異常handler,來(lái)修改,來(lái)修改CONTROL0,才能在返回到線(xiàn)程模式后,才能在返回到線(xiàn)程模式后進(jìn)入特權(quán)級(jí)。如圖進(jìn)入特權(quán)級(jí)。如圖
18、2.5所示。所示。圖圖1.6處理器模式轉(zhuǎn)換圖處理器模式轉(zhuǎn)換圖1.5 存儲(chǔ)器系統(tǒng)存儲(chǔ)器系統(tǒng)l1.5.1 存儲(chǔ)器映射存儲(chǔ)器映射l Cortex-M3采用了固定的存儲(chǔ)映射結(jié)構(gòu),如圖采用了固定的存儲(chǔ)映射結(jié)構(gòu),如圖1.7所示。所示。l Cortex-M3的地址空間是的地址空間是4GB, 程序可以在代碼區(qū),內(nèi)部程序可以在代碼區(qū),內(nèi)部SRAM區(qū)以及外部區(qū)以及外部RAM區(qū)中執(zhí)行。但是因?yàn)橹噶羁偩€(xiàn)與數(shù)區(qū)中執(zhí)行。但是因?yàn)橹噶羁偩€(xiàn)與數(shù)據(jù)總線(xiàn)是分開(kāi)的,最理想的是把程序放到代碼區(qū),從而使據(jù)總線(xiàn)是分開(kāi)的,最理想的是把程序放到代碼區(qū),從而使取指和數(shù)據(jù)訪(fǎng)問(wèn)各自使用己的總線(xiàn)。取指和數(shù)據(jù)訪(fǎng)問(wèn)各自使用己的總線(xiàn)。 圖圖1.7 Cor
19、tex-M3存儲(chǔ)器映射圖存儲(chǔ)器映射圖l 1.5.2 位帶操作位帶操作l 在在Cotex-M3存儲(chǔ)器映射中包括兩個(gè)位操作區(qū)。分別位于存儲(chǔ)器映射中包括兩個(gè)位操作區(qū)。分別位于SRAM和片上外設(shè)存儲(chǔ)區(qū)的最低和片上外設(shè)存儲(chǔ)區(qū)的最低1MB空間中。這兩個(gè)位帶空間中。這兩個(gè)位帶中的地址除了可以像普通的中的地址除了可以像普通的RAM一樣使用外,它們還都有一樣使用外,它們還都有自己的自己的“位帶別名區(qū)位帶別名區(qū)”,位帶別名區(qū)把每個(gè)比特膨脹成一個(gè),位帶別名區(qū)把每個(gè)比特膨脹成一個(gè)32位的字形成位地址。當(dāng)你通過(guò)位帶別名區(qū)訪(fǎng)問(wèn)這些字時(shí)位的字形成位地址。當(dāng)你通過(guò)位帶別名區(qū)訪(fǎng)問(wèn)這些字時(shí),就可以達(dá)到訪(fǎng)問(wèn)原始比特的目的,其對(duì)應(yīng)關(guān)
20、系如圖,就可以達(dá)到訪(fǎng)問(wèn)原始比特的目的,其對(duì)應(yīng)關(guān)系如圖1.8所。所。 1.8 位操作對(duì)應(yīng)關(guān)系圖位操作對(duì)應(yīng)關(guān)系圖l 位地址與位別名對(duì)應(yīng)關(guān)系統(tǒng)如下:位地址與位別名對(duì)應(yīng)關(guān)系統(tǒng)如下:l 對(duì)于對(duì)于SRAM位帶區(qū)的某個(gè)位:位帶區(qū)的某個(gè)位:l 對(duì)于片上外設(shè)位帶區(qū)的某個(gè)位:對(duì)于片上外設(shè)位帶區(qū)的某個(gè)位:l 在上述表達(dá)式中,在上述表達(dá)式中,A表示要操作的位所在的字節(jié)地址,表示要操作的位所在的字節(jié)地址,n(0n7)表示位序號(hào)。)表示位序號(hào)。4)8)200000000(220000000nxAxAliasaddr432)200000000(220000000nxAx4)8)400000000(420000000nxAx
21、Aliasaddr432)400000000(420000000nxAxl 51單片機(jī)可以簡(jiǎn)單的將單片機(jī)可以簡(jiǎn)單的將P1口的第口的第2位獨(dú)立操作:位獨(dú)立操作: P1.2=0;P1.2=1 l 就是這樣把就是這樣把P1口的第三個(gè)腳(口的第三個(gè)腳(BIT2)置)置0置。現(xiàn)在置?,F(xiàn)在STM32的位段、位帶別名區(qū)就為了實(shí)現(xiàn)這樣的功能。對(duì)象可以是的位段、位帶別名區(qū)就為了實(shí)現(xiàn)這樣的功能。對(duì)象可以是SRAM,I/O外設(shè)空間。實(shí)現(xiàn)對(duì)這些地方的某一位的操作。在外設(shè)空間。實(shí)現(xiàn)對(duì)這些地方的某一位的操作。在尋址空間(尋址空間(32位地址是位地址是 4GB )另一地方,取個(gè)別名區(qū)空間)另一地方,取個(gè)別名區(qū)空間,從這地址
22、開(kāi)始處,每一個(gè)字(,從這地址開(kāi)始處,每一個(gè)字(32BIT)就對(duì)應(yīng))就對(duì)應(yīng)SRAM或或I/O的一位。的一位。 這樣呢,這樣呢,1MB SRAM就可以有就可以有32MB的對(duì)應(yīng)別的對(duì)應(yīng)別名區(qū)空間,就是名區(qū)空間,就是1位膨脹到位膨脹到32位(位(1BIT 變?yōu)樽優(yōu)?個(gè)字)。對(duì)這個(gè)字)。對(duì)這個(gè)別名區(qū)空間開(kāi)始的某一字操作,置個(gè)別名區(qū)空間開(kāi)始的某一字操作,置0或置或置1,就等于它映,就等于它映射的射的SRAM或或I/O相應(yīng)的某地址的某一位的操作。相應(yīng)的某地址的某一位的操作。l 如果使用位帶別名區(qū)操作如果使用位帶別名區(qū)操作 l STM32_BB_Gpioc_Regs-BSRR.BR4 =1;/ 1:清除對(duì)應(yīng)的
23、:清除對(duì)應(yīng)的ODRy位為位為0 l STM32_BB_Gpioc_Regs-BSRR.BS7 =1;/ 1:設(shè)置對(duì)應(yīng)的:設(shè)置對(duì)應(yīng)的ODRy位為位為1 1.6 異常異常l Cortex-M3有系統(tǒng)級(jí)異常和用戶(hù)級(jí)異常,系統(tǒng)異常一般包有系統(tǒng)級(jí)異常和用戶(hù)級(jí)異常,系統(tǒng)異常一般包括復(fù)位,硬件出錯(cuò)等,用戶(hù)級(jí)異常就是我們接觸過(guò)的外部括復(fù)位,硬件出錯(cuò)等,用戶(hù)級(jí)異常就是我們接觸過(guò)的外部中斷,定時(shí)器中斷等這類(lèi)異常;中斷,定時(shí)器中斷等這類(lèi)異常;Cortex-M3的異常理論上的異常理論上最多可分最多可分256級(jí)優(yōu)先級(jí),優(yōu)先級(jí)又分搶占優(yōu)先級(jí)和子優(yōu)先級(jí)優(yōu)先級(jí),優(yōu)先級(jí)又分搶占優(yōu)先級(jí)和子優(yōu)先級(jí),搶占優(yōu)先級(jí)高的中斷可以打斷搶占優(yōu)
24、先級(jí)低的中斷;級(jí),搶占優(yōu)先級(jí)高的中斷可以打斷搶占優(yōu)先級(jí)低的中斷;搶占優(yōu)先級(jí)相同時(shí),優(yōu)先執(zhí)行子優(yōu)先級(jí)高的中斷,但是不搶占優(yōu)先級(jí)相同時(shí),優(yōu)先執(zhí)行子優(yōu)先級(jí)高的中斷,但是不會(huì)打斷正在執(zhí)行的同搶占優(yōu)先級(jí)中斷。優(yōu)先級(jí)的數(shù)值越小會(huì)打斷正在執(zhí)行的同搶占優(yōu)先級(jí)中斷。優(yōu)先級(jí)的數(shù)值越小,優(yōu)先級(jí)別越高。,優(yōu)先級(jí)別越高。l 當(dāng)有異常發(fā)生時(shí),處理器需要確定對(duì)應(yīng)異常的函數(shù)起始地當(dāng)有異常發(fā)生時(shí),處理器需要確定對(duì)應(yīng)異常的函數(shù)起始地址,各個(gè)異常的函數(shù)起始地址都存儲(chǔ)在一個(gè)向量表中,每址,各個(gè)異常的函數(shù)起始地址都存儲(chǔ)在一個(gè)向量表中,每個(gè)地址占個(gè)地址占4字節(jié),系統(tǒng)找到函數(shù)入口地址后就可調(diào)到異常字節(jié),系統(tǒng)找到函數(shù)入口地址后就可調(diào)到異常代
25、碼處執(zhí)行對(duì)應(yīng)中斷函數(shù);為了可以動(dòng)態(tài)重新分配中斷,代碼處執(zhí)行對(duì)應(yīng)中斷函數(shù);為了可以動(dòng)態(tài)重新分配中斷,CM3允許可編程設(shè)置向量表基址,通過(guò)設(shè)置向量表偏移寄允許可編程設(shè)置向量表基址,通過(guò)設(shè)置向量表偏移寄存器存器存器存器VTOR即可設(shè)置向量表起始地址,當(dāng)設(shè)置在即可設(shè)置向量表起始地址,當(dāng)設(shè)置在RAM范圍內(nèi)時(shí),即可實(shí)現(xiàn)動(dòng)態(tài)修改中斷函數(shù)地址。范圍內(nèi)時(shí),即可實(shí)現(xiàn)動(dòng)態(tài)修改中斷函數(shù)地址。l VTOR寄存器:寄存器:l1.6.1 異常類(lèi)型異常類(lèi)型l 在在Cortex-M3中有一個(gè)與內(nèi)核緊耦合部件叫嵌套向量中斷中有一個(gè)與內(nèi)核緊耦合部件叫嵌套向量中斷控制器(控制器(NVIC,Nested Vectored Interr
26、upt Controller),定定義了義了16種系統(tǒng)異常和種系統(tǒng)異常和240路外設(shè)中斷。通常芯片設(shè)計(jì)者可路外設(shè)中斷。通常芯片設(shè)計(jì)者可自由設(shè)計(jì)片上外設(shè),因此具體的片上外設(shè)中斷都不會(huì)用到自由設(shè)計(jì)片上外設(shè),因此具體的片上外設(shè)中斷都不會(huì)用到多達(dá)多達(dá)240路。路。l Cortex-M3中目前只有中目前只有11種系統(tǒng)異??捎梅謩e是:系統(tǒng)復(fù)種系統(tǒng)異??捎梅謩e是:系統(tǒng)復(fù)位、位、NMI(不可屏蔽中斷)、硬件故障、存儲(chǔ)器管理、總(不可屏蔽中斷)、硬件故障、存儲(chǔ)器管理、總線(xiàn)故障、用法故障、線(xiàn)故障、用法故障、SVCall(軟件中斷)、調(diào)試監(jiān)視器中(軟件中斷)、調(diào)試監(jiān)視器中斷、斷、PendSV(系統(tǒng)服務(wù)請(qǐng)求系統(tǒng)服務(wù)請(qǐng)
27、求)、SysTick(24位定時(shí)器中斷)位定時(shí)器中斷)。240路外設(shè)中斷,是指片上外設(shè)的各模塊,比如路外設(shè)中斷,是指片上外設(shè)的各模塊,比如I/O口、口、UART通信接口、通信接口、SSI總線(xiàn)接口等所需的中斷??偩€(xiàn)接口等所需的中斷。l Cortex-M3的每一個(gè)異常都有一個(gè)編號(hào),編號(hào)的每一個(gè)異常都有一個(gè)編號(hào),編號(hào)0對(duì)應(yīng)正常工對(duì)應(yīng)正常工作模式,編號(hào)作模式,編號(hào)1255對(duì)應(yīng)各種異常;每一個(gè)異常都可分配對(duì)應(yīng)各種異常;每一個(gè)異常都可分配一個(gè)優(yōu)先級(jí),優(yōu)先級(jí)值越小,優(yōu)先級(jí)別越高,優(yōu)先級(jí)可以一個(gè)優(yōu)先級(jí),優(yōu)先級(jí)值越小,優(yōu)先級(jí)別越高,優(yōu)先級(jí)可以為負(fù)。為負(fù)。l 其中其中115號(hào)異常為系統(tǒng)異常,號(hào)異常為系統(tǒng)異常,16
28、255都是外部中斷異常;都是外部中斷異常;在大部分情況下,開(kāi)發(fā)應(yīng)用中很少涉及到在大部分情況下,開(kāi)發(fā)應(yīng)用中很少涉及到1-15號(hào)異常的編號(hào)異常的編程處理,我們更關(guān)注的是程處理,我們更關(guān)注的是16-255號(hào)的外部異常。號(hào)的外部異常。l1.6.2 優(yōu)先級(jí)優(yōu)先級(jí)l Cortex-M3支持支持3個(gè)固定的高優(yōu)先級(jí)和多達(dá)個(gè)固定的高優(yōu)先級(jí)和多達(dá)256級(jí)的可編程級(jí)的可編程優(yōu)先級(jí),并且支持優(yōu)先級(jí),并且支持128級(jí)搶占,絕大多數(shù)芯片都會(huì)精簡(jiǎn)設(shè)級(jí)搶占,絕大多數(shù)芯片都會(huì)精簡(jiǎn)設(shè)計(jì),實(shí)際中支持的優(yōu)先級(jí)數(shù)會(huì)更少,如計(jì),實(shí)際中支持的優(yōu)先級(jí)數(shù)會(huì)更少,如8級(jí)、級(jí)、16級(jí)、級(jí)、32級(jí)級(jí)等,通常的做法是裁掉表達(dá)優(yōu)先級(jí)的幾個(gè)低端有效位(防
29、等,通常的做法是裁掉表達(dá)優(yōu)先級(jí)的幾個(gè)低端有效位(防止優(yōu)先級(jí)反轉(zhuǎn)),以減少優(yōu)先級(jí)的級(jí)數(shù)。比如止優(yōu)先級(jí)反轉(zhuǎn)),以減少優(yōu)先級(jí)的級(jí)數(shù)。比如Luminary的的芯片采用芯片采用8級(jí)優(yōu)先級(jí)。級(jí)優(yōu)先級(jí)。l Cortex-M3中中NVIC支持由軟件指定的可配置的優(yōu)先級(jí)(稱(chēng)支持由軟件指定的可配置的優(yōu)先級(jí)(稱(chēng)為軟件優(yōu)先級(jí)),其寄存器地址為:為軟件優(yōu)先級(jí)),其寄存器地址為:0 xE000_E400-0 xE000_E4EF。通過(guò)對(duì)中斷優(yōu)先級(jí)寄存器的。通過(guò)對(duì)中斷優(yōu)先級(jí)寄存器的8位位PRI_N區(qū)執(zhí)區(qū)執(zhí)行寫(xiě)操作,來(lái)將中斷的優(yōu)先級(jí)指定為行寫(xiě)操作,來(lái)將中斷的優(yōu)先級(jí)指定為0-255。硬件優(yōu)級(jí)隨。硬件優(yōu)級(jí)隨著中斷中的增加而降低。
30、著中斷中的增加而降低。0優(yōu)先級(jí)最高,優(yōu)先級(jí)最高,255優(yōu)先級(jí)最低。優(yōu)先級(jí)最低。指定軟件優(yōu)先級(jí)后,硬件優(yōu)先級(jí)無(wú)效。指定軟件優(yōu)先級(jí)后,硬件優(yōu)先級(jí)無(wú)效。l 為了對(duì)具有大量中斷的系統(tǒng)加強(qiáng)優(yōu)先級(jí)控制,為了對(duì)具有大量中斷的系統(tǒng)加強(qiáng)優(yōu)先級(jí)控制,Cortex-M3支持優(yōu)先級(jí)分組,通過(guò)支持優(yōu)先級(jí)分組,通過(guò)NVIC控制,設(shè)置為占先優(yōu)先級(jí)和次控制,設(shè)置為占先優(yōu)先級(jí)和次優(yōu)先級(jí)??赏ㄟ^(guò)應(yīng)用程序中斷及復(fù)位控制寄存器優(yōu)先級(jí)??赏ㄟ^(guò)應(yīng)用程序中斷及復(fù)位控制寄存器SCB_AIRCR中中PRIGROUP位段用來(lái)控制優(yōu)先級(jí)的分組。如果位段用來(lái)控制優(yōu)先級(jí)的分組。如果有多個(gè)激活異常共用相同的組優(yōu)先級(jí),則使用次優(yōu)先級(jí)區(qū)有多個(gè)激活異常共用相
31、同的組優(yōu)先級(jí),則使用次優(yōu)先級(jí)區(qū)來(lái)決定同組中的異常優(yōu)先級(jí),這就是同組內(nèi)的次優(yōu)先級(jí)來(lái)決定同組中的異常優(yōu)先級(jí),這就是同組內(nèi)的次優(yōu)先級(jí)l 應(yīng)用程序中斷及復(fù)位控制寄存器應(yīng)用程序中斷及復(fù)位控制寄存器SCB_AIRCR:l PRIGROUP共占共占3位,值的范圍是位,值的范圍是0-7,假如,假如PRIGROUP值為值為5,則每一個(gè)中斷對(duì)應(yīng)的優(yōu)先級(jí)寄存器的,則每一個(gè)中斷對(duì)應(yīng)的優(yōu)先級(jí)寄存器的6、7三位表示對(duì)應(yīng)三位表示對(duì)應(yīng)中斷的搶占優(yōu)先級(jí),其他位表示子優(yōu)先級(jí);每一個(gè)中斷優(yōu)中斷的搶占優(yōu)先級(jí),其他位表示子優(yōu)先級(jí);每一個(gè)中斷優(yōu)先級(jí)寄存器占先級(jí)寄存器占8位。位。l 理論上,優(yōu)先級(jí)可以分理論上,優(yōu)先級(jí)可以分256級(jí),但是優(yōu)
32、先級(jí)分組規(guī)定子優(yōu)級(jí),但是優(yōu)先級(jí)分組規(guī)定子優(yōu)先級(jí)至少占先級(jí)至少占1位,所以,搶占優(yōu)先級(jí)最多可占位,所以,搶占優(yōu)先級(jí)最多可占7位,最多可位,最多可分分128級(jí)。但并不是所有的級(jí)。但并不是所有的ARM內(nèi)核單片機(jī)都全部使用了內(nèi)核單片機(jī)都全部使用了8位優(yōu)先級(jí)寄存器,在實(shí)際單片機(jī)中,經(jīng)常只有位優(yōu)先級(jí)寄存器,在實(shí)際單片機(jī)中,經(jīng)常只有8級(jí),級(jí),16級(jí)級(jí),32級(jí)等。級(jí)等。l 以以16級(jí)優(yōu)先級(jí)為例,優(yōu)先級(jí)之所以會(huì)只有級(jí)優(yōu)先級(jí)為例,優(yōu)先級(jí)之所以會(huì)只有16級(jí),是因?yàn)樵诩?jí),是因?yàn)樵贛3單片機(jī)設(shè)計(jì)時(shí),只使用了優(yōu)先級(jí)寄存器單片機(jī)設(shè)計(jì)時(shí),只使用了優(yōu)先級(jí)寄存器NVIC_IPRx的高的高4位;如果此時(shí)位;如果此時(shí)PRIGROUP值為值為5,則優(yōu)先級(jí)分組如下:,則優(yōu)先級(jí)分組如下:l 此時(shí)此時(shí)0-3位雖然沒(méi)有使用,但是位雖然沒(méi)有使用,但是PRIGROUP的值可以設(shè)為的值可以設(shè)為0-3之間的值,如果之間的值,如果PR
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)毛染行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 個(gè)人珠寶購(gòu)買(mǎi)合同范本
- 農(nóng)戶(hù)小麥預(yù)定合同范本
- 出國(guó)境旅游合同范本
- 北京市設(shè)備采購(gòu)合同范本
- 中英文商品合同范本
- 2024年安全準(zhǔn)入考試(外協(xié)搶修、施工人員)練習(xí)試題及答案
- 人力資源外包合同范本
- 2025年度高端倉(cāng)儲(chǔ)庫(kù)房承包合同示范范本
- 農(nóng)村 住房 出租合同范例
- 二零二五年度大型自動(dòng)化設(shè)備買(mǎi)賣(mài)合同模板2篇
- 2024版金礦居間合同協(xié)議書(shū)
- GA/T 2145-2024法庭科學(xué)涉火案件物證檢驗(yàn)實(shí)驗(yàn)室建設(shè)技術(shù)規(guī)范
- 2025內(nèi)蒙古匯能煤化工限公司招聘300人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年中國(guó)融通資產(chǎn)管理集團(tuán)限公司春季招聘(511人)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 寵物護(hù)理行業(yè)客戶(hù)回訪(fǎng)制度構(gòu)建
- 電廠(chǎng)檢修管理
- 《SPIN銷(xiāo)售法課件》課件
- 機(jī)動(dòng)車(chē)屬性鑒定申請(qǐng)書(shū)
- 2024年中考語(yǔ)文試題分類(lèi)匯編:非連續(xù)性文本閱讀(學(xué)生版)
- 門(mén)店禮儀培訓(xùn)
評(píng)論
0/150
提交評(píng)論