STM32中EXTI和NVIC的關係

2022-04-28 08:42:25 字數 1427 閱讀 6076

(1)nvic(巢狀向量中斷):nvic是cortex-m3核心的一部分,關於它的資料不在《stm32的技術參考手冊》中,應查閱arm公司的《cortex-m3技術參考手冊》cortex-m3的向量中斷統一由nvic管理。

(2)exti(外部中斷):exti是st公司在其stm32產品上擴充套件的外中斷控制。它負責管理對映到gpio引腳上的外中斷和片內幾個整合外設的中斷(pvd,rtc alarm,usb wakeup,ethernet wakeup),以及軟體中斷。其輸出最終被對映到nvic的相應通道。因此,配置exti中斷的過程必然包含對nvic的配置,例如下面配置exti0的過程,就要首先配置exti控制器(使能相應的中斷線,選擇中斷/事件模式,觸發邊沿極性),然後再配置nvic控制器(exti0對映在nvic上的通道號,中斷優先順序,中斷遮蔽狀態)。

1

/*connect exti line 0 to gpio pin pb0 */2

3gpio_extilineconfig(gpio_portsourcegpiob, gpio_pinsource0);45

67/*configure exti line 0 */8

9 exti_initstructure.exti_line =exti_line0;

1011 exti_initstructure.exti_mode =exti_mode_interrupt;

1213 exti_initstructure.exti_trigger = exti_trigger_falling; //

or rising

1415 exti_initstructure.exti_linecmd =enable;

1617 exti_init(&exti_initstructure);

1819

/*enable this interrupt on corresponding nvic channel

*/20

21 nvic_initstructure.nvic_irqchannel = exti0_irqn; //

exti0_irqn is defined in stm32f10x.h

2223 nvic_initstructure.nvic_irqchannelpreemptionpriority = 1;24

25 nvic_initstructure.nvic_irqchannelsubpriority = 1;26

27 nvic_initstructure.nvic_irqchannelcmd =enable;

2829 nvic_init(&nvic_initstructure);

其中exti0_irqn的值,其實就是exti0中斷向量在中斷向量表中的位置(stm32技術參考手冊中斷向量表position欄中的數值)

stm32學習筆記 EXTI

可產生20個軟體外部中斷。探測低於apb2時鐘週期的外部脈衝。當上公升沿下降沿和軟體觸發請求時,看中斷和事件的遮蔽器來決定是否進入下一步 可同時產生 若中斷遮蔽器使能則掛起。exti0 exti15對應gpio引腳的0 15,剩下4位exti對應不同功能。這裡還指出需要配置afio exticrx暫...

stm32學習筆記 NVIC

這部分講的很好。misc.件其實就是stm32f10x nvic.h,nvic的主要操作都在其中,還包括systick的選擇源操作。core cm3檔案裡面是核心外設,當然包括nvic,l裡面包含nvic的暫存器操作。高達81個中斷,實際上是67stm外設中斷 60個settable,由庫函式int...

STM32外部中斷 exti 配置

在微控制器運用中,exti的使用算是常規操作了。在32微控制器中,exti的每個中斷均可單獨配置來選擇型別 即中斷和事件 以及相應的觸發事件 上公升沿觸發 下降沿觸發 邊沿觸發等 也可以進行單獨遮蔽的操作。如下是32中的exti框圖,其中線路1 2 3 4 5為 中斷 而1 2 3 6 7 8為 事...