




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
STM32處理器的中斷技術(shù)5.1STM32中斷通道的管理 5.2STM32中斷優(yōu)先級(jí)的設(shè)置5.3STM32外部中斷/事件控制器5.4STM32中斷編程實(shí)例
5.1STM32中斷通道的管理
中斷通道是處理中斷的通道,每個(gè)中斷通道對(duì)應(yīng)唯一的中斷向量和唯一的中斷服務(wù)程序,但一個(gè)中斷通道可具有多個(gè)可以引起中斷的中斷源,這些中斷源都能通過(guò)對(duì)應(yīng)的“中斷通道”向內(nèi)核(CPU)申請(qǐng)中斷。
STM32系統(tǒng)的嵌套向量中斷控制器和處理器,支持15個(gè)異常中斷向量和240個(gè)外部中斷通道,有256級(jí)中斷優(yōu)先級(jí)。而STM32的中斷系統(tǒng)并沒(méi)有使用內(nèi)核(CM3)的NVIC全部功能,除15個(gè)CM3異常外,STM32F103系列具有60個(gè)中斷通道,而STM32F107系列具有68個(gè)中斷通道,中斷優(yōu)先級(jí)有16級(jí)。在STM32系列控制器中,STM32F103xxx處理器的15個(gè)異常中斷向量見(jiàn)表5.1,68個(gè)中斷通道向量見(jiàn)表5.2所示。
5.2STM32中斷優(yōu)先級(jí)的設(shè)置
1.嵌套設(shè)定規(guī)則
STM32中有兩個(gè)優(yōu)先級(jí)的概念,即占先優(yōu)先級(jí)(PreemptionPriority)和副優(yōu)先級(jí)(Subpriority)。STM32規(guī)定的嵌套規(guī)則如下:
(1)高占先優(yōu)先級(jí)的中斷可以打斷低占先優(yōu)先級(jí)的中斷服務(wù),從而構(gòu)成中斷嵌套。相同占先優(yōu)先級(jí)的中斷之間不能構(gòu)成中斷嵌套,即當(dāng)一個(gè)中斷到來(lái)時(shí),如果STM32正在處理另一個(gè)同占先優(yōu)先級(jí)的中斷,這個(gè)后來(lái)的中斷就要等到前一個(gè)中斷處理完后才能被執(zhí)行。
(2)副優(yōu)先級(jí)不可以中斷嵌套,但占先優(yōu)先級(jí)相同但副優(yōu)先級(jí)不同的多個(gè)中斷同時(shí)申請(qǐng)服務(wù)時(shí),STM32首先響應(yīng)副優(yōu)先級(jí)高的中斷。
(3)當(dāng)相同占先優(yōu)先級(jí)和相同副優(yōu)先級(jí)的中斷同時(shí)申請(qǐng)服務(wù)時(shí),STM32首先響應(yīng)中斷通道所對(duì)應(yīng)的中斷向量地址低(中斷號(hào)小)的那個(gè)中斷。
(4)需要說(shuō)明的是,中斷優(yōu)先級(jí)的概念是針對(duì)“中斷通道”的。當(dāng)中斷通道的優(yōu)先級(jí)確定后,該中斷通道對(duì)應(yīng)的所有中斷源都享有相同的中斷優(yōu)先級(jí)。至于該中斷通道對(duì)應(yīng)的多個(gè)中斷源的執(zhí)行順序,則取決于用戶的中斷服務(wù)程序。
(5)?STM32目前支持的中斷共有83個(gè),分別為15個(gè)內(nèi)核異常和68個(gè)外部中斷通道。CM3為每個(gè)中斷通道都配備了8位中斷優(yōu)先級(jí)控制字IP_n,這8位可以有8種分配方式,即:
①所有8位用于指定的副優(yōu)先級(jí)。
②最高1位用于指定的占先優(yōu)先級(jí),最低7位用于指定的副優(yōu)先級(jí)。
③最高2位用于指定的占先優(yōu)先級(jí),最低6位用于指定的副優(yōu)先級(jí)。
④最高3位用于指定的占先優(yōu)先級(jí),最低5位用于指定的副優(yōu)先級(jí)。
⑤最高4位用于指定的占先優(yōu)先級(jí),最低4位用于指定的副優(yōu)先級(jí)。
⑥最高5位用于指定的占先優(yōu)先級(jí),最低3位用于指定的副優(yōu)先級(jí)。
⑦最髙6位用于指定的占先優(yōu)先級(jí),最低2位用于指定的副優(yōu)先級(jí)。
⑧最高7位用于指定的占先優(yōu)先級(jí),最低1位用于指定的副優(yōu)先級(jí)。
(6)為了簡(jiǎn)化中斷優(yōu)先級(jí)的設(shè)置,在Cortex_M3中只使用了8位中的高4位。這4位被分成2組(占先優(yōu)先級(jí)和副優(yōu)先級(jí)),從高位開(kāi)始,前面是定義占先優(yōu)先級(jí)的位,后面是用于定義副優(yōu)先級(jí)的位。4位中斷優(yōu)先級(jí)控制位分組方式如表5.3所示。
在程序設(shè)計(jì)中,通常只使用表5.3中5種分配情況中的一種。也就是說(shuō)對(duì)于0組,所有的4位都用于副優(yōu)先級(jí)(可以是0~15);對(duì)于1組,最高1位用于占先優(yōu)先級(jí)(可以是0~1),最低3位用于副優(yōu)先級(jí)(可以是0~7);對(duì)于2組,最高2位用于占先優(yōu)先級(jí)(可以是0~3),最低2位用于副優(yōu)先級(jí)(可以是0~3);對(duì)于3組,最高3位用于占先優(yōu)先級(jí)(可以是0~7),最低1位用于副優(yōu)先級(jí)(可以是0~1);對(duì)于4組,所有4位都用于占先優(yōu)先級(jí)(可以是0~15)。
上述分組在STM32固件庫(kù)misc.h中,設(shè)置數(shù)據(jù)寫(xiě)入到AIRCR的[10:8]寄存器內(nèi),其宏定義如下:
#defineNVIC_PriorityGroup_0((u32)0x700)//0組定義
#defineNVIC_PriorityGroup_1((u32)0x600)//1組定義
#defineNVIC_PriorityGroup_2((u32)0x500)//2組定義
#defineNVIC_PriorityGroup_3((u32)0x400)//3組定義
#defineNVIC_PriorityGroup_4((u32)0x300)//4組定義
在編程時(shí)可以調(diào)用3.18.1中的NVIC_PriorityGroupConfig()優(yōu)先級(jí)設(shè)置函數(shù)和NVIC_Init(&NVIC_InitStructure)初始化函數(shù)。函數(shù)中的分組選項(xiàng)為:
NVIC_PriorityGroup_0(選擇為第0組);
NVIC_PriorityGroup_1(選擇為第1組);
NVIC_PriorityGroup_2(選擇為第2組);
NVIC_PriorityGroup_3(選擇為第3組);
NVIC_PriorityGroup_4(選擇為第4組)。
5.3STM32外部中斷/事件控制器
外部中斷/事件控制器(EXTI)由19個(gè)產(chǎn)生事件/中斷要求的邊沿檢測(cè)器組成。每個(gè)輸入線可以獨(dú)立地配置輸入類型(脈沖或掛起)和對(duì)應(yīng)的觸發(fā)事件(上升沿或下降沿或雙邊沿都觸發(fā))。每個(gè)輸入線都可以被獨(dú)立地屏蔽,掛起寄存器保持著狀態(tài)線的中斷要求。
5.3.1EXTI硬件結(jié)構(gòu)
STM32的外部中斷/事件控制器對(duì)應(yīng)19個(gè)中斷通道,其中16個(gè)中斷通道EXTI0~EXTI15對(duì)應(yīng)GPIOx_Pin0~GPIOx_Pin15,另外3個(gè)是EXTI16連接PVD輸出(表5.2中第1號(hào)中斷)、EXTI17連接到RTC鬧鐘事件(表5.2中第41號(hào)中斷)和EXTI18連接到USB喚醒事件(表5.2中第42號(hào)中斷)。EXTI硬件結(jié)構(gòu)如圖5.1所示。圖5.1STM32EXTI硬件結(jié)構(gòu)圖
在圖5.1中,外部信號(hào)從編號(hào)①的芯片引腳進(jìn)入,經(jīng)過(guò)編號(hào)②的邊沿檢測(cè)電路,通過(guò)編號(hào)③的或門(mén)進(jìn)入中斷(請(qǐng)求掛起寄存器),最后經(jīng)過(guò)編號(hào)④的與門(mén)輸出到NVIC中斷控制器。在這個(gè)通道上有4個(gè)控制部分。
(1)圖中②處,外部的信號(hào)首先經(jīng)過(guò)邊沿檢測(cè)電路,這個(gè)邊沿檢測(cè)電路受上升沿或下降沿選擇寄存器控制,用戶可以使用這兩個(gè)寄存器控制需要產(chǎn)生中斷的邊沿。因?yàn)檫x擇上升沿或下降沿分別受2個(gè)寄存器控制,所以用戶可以同時(shí)選擇上升沿或下降沿。
(2)編號(hào)③的或門(mén)一個(gè)輸入是邊沿檢測(cè)電路處理的外部中斷信號(hào),另一個(gè)輸入是“軟件中斷事件寄存器”,從這里可以看出,軟件可以優(yōu)先于外部信號(hào)請(qǐng)求一個(gè)中斷或事件,即當(dāng)“軟件中斷事件寄存器”的對(duì)應(yīng)位為“1”時(shí),不管外部信號(hào)如何,編號(hào)③的或門(mén)都會(huì)輸出有效信號(hào)。
(3)中斷或事件請(qǐng)求信號(hào)經(jīng)過(guò)編號(hào)③的或門(mén)后,進(jìn)入請(qǐng)求掛起寄存器,請(qǐng)求掛起寄存器中記錄了外部信號(hào)的電平變化。
(4)外部請(qǐng)求信號(hào)最后經(jīng)過(guò)編號(hào)④的與門(mén),向NVIC中斷控制器發(fā)出一個(gè)中斷請(qǐng)求,如果中斷屏蔽寄存器的對(duì)應(yīng)位為“0”,則該請(qǐng)求信號(hào)不能傳輸?shù)脚c門(mén)的另一端,實(shí)現(xiàn)了中斷的屏蔽。
(5)如果用戶希望產(chǎn)生“事件”,則必須先配置并完成對(duì)事件線的使能操作。通過(guò)設(shè)置兩個(gè)觸發(fā)寄存器來(lái)完成對(duì)邊沿檢測(cè)的配置,同時(shí)在事件屏蔽寄存器的相應(yīng)位寫(xiě)“1”以允許事件請(qǐng)求操作。當(dāng)事件線上發(fā)生了對(duì)應(yīng)的邊沿信號(hào)時(shí),系統(tǒng)將產(chǎn)生一個(gè)事件請(qǐng)求脈沖,對(duì)應(yīng)的掛起位并不會(huì)被置“1”。
在圖5.1上部的APB總線和外設(shè)模塊接口是每一個(gè)功能模塊都有的部分,CPU通過(guò)這樣的接口訪問(wèn)各個(gè)功能模塊。
1.硬件中斷的配置
用戶可以通過(guò)下面的步驟來(lái)配置多個(gè)線路作為中斷源,具體操作如下:
(1)在EXTI_IMR寄存器中配置多個(gè)線路中斷的屏蔽位。
(2)在EXTI_RTSR寄存器和EXTI_FTSR寄存器中配置所選擇中斷線的觸發(fā)選擇位。
(3)配置對(duì)應(yīng)到外部中斷控制器EXTI的NVIC中斷通道的使能和屏蔽位,使得多個(gè)中斷線中的請(qǐng)求可以被及時(shí)響應(yīng)。
2.硬件事件的配置
對(duì)于系統(tǒng)中的事件處理,用戶可以通過(guò)以下幾個(gè)步驟來(lái)實(shí)現(xiàn)對(duì)硬件事件參數(shù)的配置:
(1)通過(guò)EXTI_EMR寄存器配置多個(gè)事件線的屏蔽位。
(2)通過(guò)EXTI_RTSR寄存器和EXTI_FTSR寄存器配置事件線的觸發(fā)選擇器。
3.軟件中斷/事件的配置
對(duì)于系統(tǒng)中的軟件中斷/事件處理,用戶可以通過(guò)以下幾個(gè)步驟來(lái)實(shí)現(xiàn)對(duì)軟件中斷/事件的配置:
(1)通過(guò)EXTI_EMR寄存器和EXTI_IMR寄存器配置多個(gè)中斷/事件線的屏蔽位。
(2)通過(guò)EXTI_SWIER寄存器配置軟件中斷寄存器的請(qǐng)求位。
4.外部中斷/事件線路映射
圖5.2列出了外部中斷與通用I/O口之間的硬件連接。用戶可以通過(guò)AFIO_EXTICRx配置GPIO端口上的外部中斷/事件。其中,16個(gè)外部中斷(引腳)連接對(duì)應(yīng)EXTI0~EXTI15,另外3個(gè)外部中斷/事件控制器的連接如下:
(1)?EXTI線16連接到PVD輸出。
(2)?EXTI線17連接到RTC鬧鐘事件。
(3)?EXTI線18連接到USB喚醒事件。圖5.2外部中斷I/O映射
對(duì)于STM32F103來(lái)說(shuō),每個(gè)中斷通道對(duì)應(yīng)5個(gè)中斷源,每個(gè)中斷源的選擇由AFIO_EXTICRx(x:1~3)寄存器決定。
AFIO_EXTICR1中的EXTI0[3:0]的含義為:0000——PA[0]引腳;0001——PB[0]引腳;0010——PC[0]引腳;0011——PD[0]引腳;0100——PE[0]引腳。EXTI1[3:0]的含義為:
0000——PA[1]引腳;0001——PB[1]引腳;0010——PC[1]引腳;0011——PD[1]引腳;0100——PE[1]引腳。以此類推。
對(duì)于某一中斷線,如中斷線0,PA[0]、PB[0]、PC[0]、PD[0]和PE[0]均可映射為中斷線0;當(dāng)某一GPIO引腳(如PB[0])映射為中斷線0時(shí),PA[0]、PC[0]、PD[0]和PE[0]就不能再映射成中斷引腳。5.3.2EXTI的寄存器
EXTI寄存器不可以位尋址,在使用STM32處理器的外部中斷前,必須通過(guò)EXTI相應(yīng)的寄存器對(duì)其各個(gè)參數(shù)進(jìn)行配置。需要注意的是,使用者在設(shè)置寄存器的過(guò)程中,必須采用字(32bit)的方式對(duì)其進(jìn)行操作。
1.中斷屏蔽寄存器
在STM32系列處理器中,中斷屏蔽寄存器EXTI_IMR主要用于設(shè)置中斷線上的中斷屏蔽操作。由于STM32系列處理器是32位的內(nèi)核,因此中斷屏蔽寄存器的寬度也為32位,其寄存器各位定義如表5.4所示。
從表5.6可以看出,下降沿觸發(fā)選擇寄存器EXTI_FTSR中,位[31:20]是系統(tǒng)保留位,且必須始終保持為復(fù)位狀態(tài);位[19:0]用于設(shè)置對(duì)應(yīng)中斷線上的觸發(fā)方式。TRx表示中斷線x上的下降沿觸發(fā)事件配置。若TRx=0,則表示禁止輸入線x上的下降沿中斷或事件的觸發(fā);若TRx=1,則表示允許輸入線x上的下降沿中斷或事件的觸發(fā)。
由于外部喚醒線同樣也是邊沿觸發(fā)的,所以在這些信號(hào)線上也不能出現(xiàn)毛刺信號(hào)。另外,用戶在對(duì)下降沿觸發(fā)選擇寄存器EXTI_FTSR進(jìn)行寫(xiě)操作的時(shí)候,外部中斷線上的下降沿觸發(fā)信號(hào)不能被識(shí)別,掛起位也不會(huì)被置位。在同一個(gè)中斷線上,用戶也可以同時(shí)將其設(shè)置為上升沿觸發(fā)和下降沿觸發(fā),即任何一個(gè)邊沿都可以觸發(fā)系統(tǒng)的外部中斷。
5.4STM32中斷編程實(shí)例
1.中斷編程機(jī)制
中斷服務(wù)程序全部保存在stm32f10x_it.c文件中。在該文件中,每個(gè)中斷函數(shù)都是空的。如果要編寫(xiě)相關(guān)中斷函數(shù),只要找到相關(guān)部分填入相應(yīng)代碼即可。因?yàn)槊總€(gè)xx_IRQHandler()與startup_stm32f10x_xx.s中的中斷向量表(見(jiàn)表5.2)中名稱一致,所以,只要是有中斷源被觸發(fā)而被響應(yīng),硬件就會(huì)自動(dòng)跳到固定地址的硬件中斷向量表中,無(wú)須人為操作(即編程)就能通過(guò)硬件自身的總線來(lái)讀取向量,然后找到xX_IRQHandler()程序入口地址,放到PC進(jìn)行跳轉(zhuǎn),這是STM32的硬件機(jī)制。
表5.2中,中斷向量表地址為相對(duì)地址,如果存放在RAM中,其起始地址為0x20000000。如果存放在Flash中,其起始地址為0x08000000。在misc.h文件中有如下說(shuō)明:
#defineNVIC_VectTab_RAM((uint32_t)0x20000000)
#defineNVIC_VectTab_FLASH ((uint32_t)0x0800
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年專利考試常見(jiàn)易錯(cuò)點(diǎn)試題及答案
- 醫(yī)院政工科筆試題及答案
- 寵物店協(xié)議合同模板
- 2025年公共衛(wèi)生執(zhí)業(yè)醫(yī)師考試健康傳播知識(shí)試題及答案
- 2025年全科助理醫(yī)師考題難度分析試題及答案
- 如何有效利用專利信息進(jìn)行決策試題及答案
- 關(guān)注2024年醫(yī)學(xué)基礎(chǔ)知識(shí)試題趨勢(shì)試題及答案
- 文化產(chǎn)業(yè)管理證書(shū)全方位試題及答案
- 衛(wèi)生管理證書(shū)考試分析試題及答案
- 2024年文化產(chǎn)業(yè)管理證書(shū)考試全方位解析試題及答案
- 兩位數(shù)除以一位數(shù)(有余數(shù))計(jì)算題200道
- 產(chǎn)后早開(kāi)奶好處健康宣教
- 2024屆江蘇省期無(wú)錫市天一實(shí)驗(yàn)校中考聯(lián)考英語(yǔ)試題含答案
- 內(nèi)鏡室院感培訓(xùn)知識(shí)
- 北師大版數(shù)學(xué)三年級(jí)下冊(cè)《長(zhǎng)方形的面積》
- 八年級(jí)黃金矩形(公開(kāi)課)
- 住院醫(yī)師規(guī)范化培訓(xùn)臨床小講課指南(2021年版)全文解讀
- 巖石錨噴支護(hù)設(shè)計(jì)計(jì)算書(shū)
- 醫(yī)院手衛(wèi)生依從性觀察表
- 某工程項(xiàng)目精細(xì)化管理宣貫課件
- 精裝修算量與計(jì)價(jià)學(xué)習(xí)總結(jié)課件
評(píng)論
0/150
提交評(píng)論