STM32之中斷和異常

2021-07-22 14:02:29 字數 1390 閱讀 8371

1、stm32的所有gpio都可以用作外部中斷源的輸入端,用來捕捉外部訊號,可以配置為下降沿中斷、上公升沿中斷和上公升下降沿中斷三種模式。

2、cortex核心具有很強大的異常響應系統,它把能夠打斷當前**執行流程的時間分為異常(exception)和中斷(interrupt),並把它們用乙個表管理起來,編號0~15的稱為核心異常,而16以上的則稱為外部中斷。這個表就稱為中斷向量表。

3、nvic是屬於cortex核心的器件,不可遮蔽中斷(nmi)和外部中斷都由它來處理,而systick不是由nvic來控制的。

4、stm32的中斷向量具有兩個屬性,乙個為搶占屬性,另乙個為響應屬性,其屬性編號越小,表明它的優先級別越高。

搶占,是指打斷其他中斷的屬性,即因為具有這個屬性會出現巢狀中斷(在執行中斷服務函式a的過程中被中斷b打斷,執行完中斷函式b再繼續執行中斷服務函式a),搶占屬性由nvic_irqchannelpreemptionpriority的引數配置。

而響應屬性則應用在搶占屬性相同的情況下,當兩個中斷向量的搶占優先順序相同時,如果兩個中斷同時到達,則先處理響應優先順序高的中斷,響應屬性由nvic_irqchannelsubpriority引數配置。

5、nvic只能配置16種中斷向量,如果工程中超過16個中斷怎麼辦?

注意nvic能配置的是16種中斷向量,而不是16個,當工程中有超過16個中斷向量時,必然有兩個月以上的中斷向量是會用相同的中斷種類,而具有相同中斷種類的中斷向量不能互相巢狀。

6、afio時鐘

當把gpio用作exit外部中斷或使用重對映功能的時候,必須開啟afio時鐘,而在使用預設復用功能的時候,就不必開啟afio時鐘。

7、中斷服務函式名是不是可以自己定義?

不可以,中斷服務函式的名字必須要與啟動檔案startup_stm32f10x_hd.s中的中斷向量表定義一致。

8、中斷函式名有兩種命名方法:

① exti0_irqhandler ;exti line0

exti1_irqhandler ;exti line1

exti2_irqhandler ;exti line2

exti3_irqhandler ;exti line3

exti4_irqhandler ;exti line4

② exti9_5_irqhandler ;exti line 9..5

exti5_10_irqhandler ;exti line 15..10

中斷線在5之後的就不能像0~4那樣只有單獨乙個函式名,都必須寫成exti9_5_irqhandler和exti15_10_irqhandler。假如寫成exti5_irqhandler、exti6_irqhandler、……、exti15_irqhandler編譯器是不會報錯的,不過中斷服務程式不能工作。所以如果不知道這樣的區別,會浪費很多時間來查詢錯誤。

stm32之中斷系統

前言 這一節以及後面的定時器部分都是學習所有的微控制器時的最重要的部分,我也花了很多時間去理解手冊和程式,我爭取盡量全面並且細緻的記錄我的體會。這裡就省略了,相信你學過微控制器就會懂。nvic的中文意思是巢狀向量中斷控制器,控制著中斷的相關功能 其中包括中斷源 搶占優先順序 響應優先順序 中斷的使能...

STM32基礎之中斷

stm32中斷很強大,stm32中斷可以巢狀,任何外設都可以產生中斷,其中中斷和異常是等價的.中斷,在微控制器中占有非常重要的地位。預設地從上向下執行,遇到條件或者其他語句,會按照指定的地方跳轉。而在微控制器執行 的過程中,難免會有一些突發的情況需要處理,這樣就會打斷當前的 待處理完突發情況之後,程...

stm32 韌體庫之 中斷

stm32 可以支援的 68 個外部中斷通道,已經固定的分配給相應的外部裝置。每個中斷通道都具備自己的中斷優先順序控制位元組 pri n 8 位,但在 stm32 中只使用 4 位,高 4 位有效 共可以有 5 種分組 第 0 組方式 所有 4 位用於響應中斷 bit7 bit6 bit5 bit4...