當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]朋友們,如果你需要在STM32上移植RTOS,那么首先必須深入理解它的中斷系統(tǒng)。什么是NVIC?即嵌套向量中斷控制器(Nested Vectored Interrupt Controller)。STM32的中有一個強(qiáng)大而方便的NVIC,它是屬于Cortex內(nèi)核的器件,

朋友們,如果你需要在STM32上移植RTOS,那么首先必須深入理解它的中斷系統(tǒng)。什么是NVIC?即嵌套向量中斷控制器(Nested Vectored Interrupt Controller)。STM32的中有一個強(qiáng)大而方便的NVIC,它是屬于Cortex內(nèi)核的器件,不可屏蔽中斷(NMI)和外部中斷都由它來處理,而SYSTICK不是由NVIC來控制的。

特性:

●60個可屏蔽中斷通道(不包含16個Cortex?-M3的中斷線);

●16個可編程的優(yōu)先等級(使用了4位中斷優(yōu)先級);

●低延遲的異常和中斷處理;

●電源管理控制;

●系統(tǒng)控制寄存器的實(shí)現(xiàn);

1.中斷優(yōu)先級分組

STM32(Cortex-M3)中有兩個優(yōu)先級的概念--搶占式優(yōu)先級和響應(yīng)優(yōu)先級,有人把響應(yīng)優(yōu)先級稱作'亞優(yōu)先級'或'副優(yōu)先級',每個中斷源都需要被指定這兩種優(yōu)先級。

具有高搶占式優(yōu)先級的中斷可以在具有低搶占式優(yōu)先級的中斷處理過程中被響應(yīng),即中斷嵌套,或者說高搶占式優(yōu)先級的中斷可以嵌套在低搶占式優(yōu)先級的中斷中。

當(dāng)兩個中斷源的搶占式優(yōu)先級相同時,這兩個中斷將沒有嵌套關(guān)系,當(dāng)一個中斷到來后,如果正在處理另一個中斷,這個后到來的中斷就要等到前一個中斷處理完之后才能被處理。如果這兩個中斷同時到達(dá),則中斷控制器根據(jù)他們的響應(yīng)優(yōu)先級高低來決定先處理哪一個;如果他們的搶占式優(yōu)先級和響應(yīng)優(yōu)先級都相等,則根據(jù)他們在中斷表中的排位順序決定先處理哪一個。

Cortex內(nèi)核具有強(qiáng)大的異常響應(yīng)系統(tǒng),它把能夠打斷當(dāng)前代碼執(zhí)行流程的事件分為異常(exception)和中斷(interrupt),并把它們用一個表管理起來,編號為0~15的稱為內(nèi)核異常,而16以上的則稱為外部中斷,這個表就稱為中斷向量表。

正是因?yàn)槊總€中斷源都需要被指定這兩種優(yōu)先級,就需要有相應(yīng)的寄存器位記錄每個中斷的優(yōu)先級;在Cortex-M3中定義了8個比特位用于設(shè)置中斷源的優(yōu)先級,這8個比特位可以有8種分配方式,如下:

1.所有8位用于指定響應(yīng)優(yōu)先級

2.最高1位用于指定搶占式優(yōu)先級,最低7位用于指定響應(yīng)優(yōu)先級

3.最高2位用于指定搶占式優(yōu)先級,最低6位用于指定響應(yīng)優(yōu)先級

4.最高3位用于指定搶占式優(yōu)先級,最低5位用于指定響應(yīng)優(yōu)先級

5.最高4位用于指定搶占式優(yōu)先級,最低4位用于指定響應(yīng)優(yōu)先級

6.最高5位用于指定搶占式優(yōu)先級,最低3位用于指定響應(yīng)優(yōu)先級

7.最高6位用于指定搶占式優(yōu)先級,最低2位用于指定響應(yīng)優(yōu)先級

8.最高7位用于指定搶占式優(yōu)先級,最低1位用于指定響應(yīng)優(yōu)先級

以上便是優(yōu)先級分組的概念,但是Cortex-M3允許具有較少中斷源時使用較少的寄存器位指定中斷源的優(yōu)先級。

而STM32對這個表重新進(jìn)行了編排,把編號從-3至6的中斷向量定義為系統(tǒng)異常,編號為負(fù)的內(nèi)核異常不能被設(shè)置優(yōu)先級,如復(fù)位(Reset)、不可屏蔽中斷(NMI)、硬錯誤(Hardfault)。從編號7開始的為外部中斷,這些中斷的優(yōu)先級都是可以用戶更改的。詳細(xì)的STM32中斷向量號可以在startup_stm32f10x_XX.s中查找。

因此STM32把指定中斷優(yōu)先級的寄存器位減少到4位,這4個寄存器位的分組方式如下:

第0組:所有4位用于指定響應(yīng)優(yōu)先級(16種)

第1組:最高1位用于指定搶占式優(yōu)先級,最低3位用于指定響應(yīng)優(yōu)先級(8種)

第2組:最高2位用于指定搶占式優(yōu)先級,最低2位用于指定響應(yīng)優(yōu)先級(4種)

第3組:最高3位用于指定搶占式優(yōu)先級,最低1位用于指定響應(yīng)優(yōu)先級(2種)

第4組:所有4位用于指定搶占式優(yōu)先級

這里便對于于文章最前提到的固件庫里相關(guān)的函數(shù)了——NVIC_PriorityGroupConfig(u32 NVIC_PriorityGroup),函數(shù)的參數(shù)共有5種:

這個函數(shù)的參數(shù)(NVIC_PriorityGroup值)有下列5種:

NVIC_PriorityGroup_0 =>選擇第0組

NVIC_PriorityGroup_1 =>選擇第1組

NVIC_PriorityGroup_2 =>選擇第2組

NVIC_PriorityGroup_3 =>選擇第3組

NVIC_PriorityGroup_4 =>選擇第4組

這其實(shí)也很好理解,比如選擇NVIC_PriorityGroup_1,那么搶占式優(yōu)先級便占一位,也就是說可以有2^1個級別,可以設(shè)置為0和1,而響應(yīng)優(yōu)先級則占3位,也就是說可以有2^3個選擇,可以設(shè)置為0~7;總共來說就可以區(qū)別>16種優(yōu)先級了。

//NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

//NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

舉個例子吧,假如現(xiàn)在有4個外部中斷,還有一個EXTI9_5中斷,那么如果選擇優(yōu)先級分組為第1組,那么搶占式優(yōu)先級便只有兩種,5個中斷就至少有3個在搶占式優(yōu)先級上是相同的優(yōu)先級上,其他兩個在令一優(yōu)先級別。接著設(shè)置響應(yīng)優(yōu)先級可以有8種選擇;假如現(xiàn)在同時有兩個搶占式優(yōu)先級別相同的中斷發(fā)生,那么處理的順序是誰的響應(yīng)優(yōu)先級高則誰優(yōu)先進(jìn)入中斷,另外這點(diǎn)是需要注意的,如果此時進(jìn)入這個中斷之后又來了一個搶占式優(yōu)先級相同但是響應(yīng)優(yōu)先級更高的中斷,這時也是不會打斷已有的中斷的。

void NVIC_Config(void)

{

NVIC_InitTypeDef NVIC_InitStructure;

#ifdefVECT_TAB_RAM

//Set the Vector Table base location at 0x20000000

NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);

#else

//Set the Vector Table base location at 0x08000000

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);

#endif

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//中斷優(yōu)先級組:1組(整個系統(tǒng)為同一組)

//設(shè)置先占優(yōu)先級0~1,響應(yīng)優(yōu)先級0~7

NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

//* Enable the TIM3 Interrupt

NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;// TIM3全局中斷

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //先占優(yōu)先級1

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//從優(yōu)先級1

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;// IRQ通道被使能

NVIC_Init(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占優(yōu)先級0

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//響應(yīng)優(yōu)先級0

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉