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