STM32F103中斷系統

2021-10-02 01:35:42 字數 1957 閱讀 3675

一、中斷介紹

1.1 中斷概念

cpu執行程式時,由於發生了某種隨機的事件(外部或內部),引起cpu暫時中斷正在執行的程式,轉去執行一段特殊的服務程式(中斷服務子程式或中斷處理程式),以處理該事件,該事件處理完後又返回被中斷的程式繼續執行,這一過程稱為中斷。引發中斷的稱為中斷源。比如:看電視時突然門鈴響,那麼門鈴響就相當於中斷源。有些中斷還能夠被其他高優先順序的中斷所中斷,那麼這種情況又叫做中斷的巢狀。

stm32f10x晶元有84個中斷通道,包括 16 個核心中斷和 68 個可遮蔽中斷,這些中斷通道已按照不同優先順序順序固定分配給相應的外部裝置。

1.2 nvic介紹

nvic英文全稱是nested vectored interrupt controller,中文意思就是巢狀向量中斷控制器,它屬於m3核心的乙個外設,控制著晶元的 中斷相關功能。由於arm給nvic預留了非常多的功能,但對於使用m3核心設計晶元的公司可能就不需要這麼多功能,於是就需要在nvic上裁剪。st公司的stm32f103晶元內部中斷數量就是nvic裁剪後的結果。 中斷控制相關暫存器在韌體庫core_cm3.**件nvic結構體內。可開啟任意庫函式工程即可檢視到。

1.3 中斷優先順序

stm32f103晶元支援60個可遮蔽中斷通道,每個中斷通道都具備自己的中斷優先順序控制位元組(8位,但是stm32f103中只使用4位,高4位有效),用於表達優先順序的高4位又被為組成搶占式優先順序和響應

優先順序,通常也把響應優先順序稱為「亞優先順序」或「副優先順序」,每個中斷源都需要被指定這兩種優先順序。 高搶占式優先順序的中斷事件會打斷當前的主程式或者中斷程式執行,俗稱中斷巢狀。在搶占式優先順序相同的情況下,高響應優先順序的中斷優先被響應。 當兩個中斷源的搶占式優先順序相同時,這兩個中斷將沒有巢狀關係,當乙個中斷到來後,如果正在處理另乙個中斷,這個後到來的中斷就要等到前乙個中斷處理完之後才能被處理。如果這兩個中斷同時到達,則中斷控制器根據他們的響應優先順序高低來決定先處理哪乙個;如果他們的搶占式優先順序和響應優先順序都相等,則根據他們在中斷表中的排位順序決定先處理那乙個。

二、中斷配置步驟

要使用中斷我們就需要先配置它,通常都需經過這幾步:

(1)使能外設某個中斷

(2)設定中斷優先順序分組,初始化 nvic_inittypedef 結構體

typedef structnvic_inittypedef;
不過要注意一點的是,nvic只可以配置16種中斷向量的優先順序,其搶占優先順序和響應優先順序都用乙個4位的數字來決定。在庫函式中,將其分為了5中不同的分配方式:

第0組所有的4位都有來表示響應優先順序,能夠配置16種不同的響應優先順序。中斷優先順序則都相同。

第1組最高一位用來配置搶占優先順序,剩餘三位用來表示響應優先順序。那麼就有兩種不同的搶占優先順序(0和1)和8種不同的響應優先順序(0~7)。

第2組高兩位用來配置搶占優先順序,低位用來配置響應優先順序。那麼兩種優先順序就各有4種。

第3組高三位用來配置搶占優先順序,低位用來配置響應優先順序。有8種搶占優先順序和2種相應優先順序。

第4組所有位都用來配置搶占優先順序,即有16種搶占優先順序,沒有響應屬性。

搶占優先順序的級別高於響應優先順序。而數值越小所代表的優先順序就越高。

高的搶占式優先順序可以打斷低的搶占式優先順序,故名搶占;而在搶占式優先順序相同的情況下,響應優先順序越高,同時發生則先響應它,但是不能打斷低響應優先順序,響應表達的是響應速度。

配置的api如下:

nvic_prioritygroupconfig();

第0組nvic_prioritygroup_0

第1組nvic_prioritygroup_1

第2組nvic_prioritygroup_2

第3組nvic_prioritygroup_3

第4組nvic_prioritygroup_4

(3)編寫中斷服務函式

中斷函式的函式名與中斷源有關

STM32F103 中斷綜述

一 中斷核心 stm32的中斷很強大,每個外設都可以產生中斷,f103在核心水平上搭載了異常響應系統,系統異常有8個 算上reset和hardfault也就10個 外部中斷有60個,但是根據nvic 巢狀向量中斷控制器,控制整個晶元中斷相關的功能 ip 中斷優先順序暫存器 陣列中預留了240個位置 ...

stm32f103外部中斷

void extix init void 外部中斷0服務程式 void exti9 5 irqhandler void 這是簡單的外部中斷的配置,pc7作為中斷輸入 上面補充io口的初始化 gpio initstructure.gpio mode gpio mode ipu pc6配置為快充指示 1...

STM32f103之外部中斷

一 背景 有個需求,io口檢測上公升沿,然後做相應的動作。在此記錄stm32f103的外部中斷結構及配置方法,以備下次快速上手使用。有許多不太明白,又是老司機 d 幫忙,真的是站在別人的肩膀上會讓你看的更遠,走的更快,感謝老司機。二 正文 stm32f103有68個可遮蔽中斷。但是,真正能用的其實遠...