NVIC----EXTI流程理解

    什麼是NVIC?即嵌套向量中斷控制器(Nested Vectored Interrupt Controller)。它屬於Cortex內核的器件,不可屏蔽中斷(NMI)和外部中斷都由它來處理,而SYSTICK不是由NVIC來控制的。

-------------------------------------------------- -------------------------------------------------- ------------------------------

    首先需要給中斷分優先級,在的的start.s中我們可以看到,可以對應到用戶手冊中,優先級的值越小,優先級越高。在優先級中,分爲搶佔式優先級和響應優先級,每個中斷都需要被指定這兩個優先級。

    其中,搶佔優先級功能重於響應優先級,響應優先級又被稱爲副優先級。

    可以這樣理解,當存在兩個不同的搶佔優先級時,無論響應優先級順序,優先處理搶佔優先級較高的事件,搶佔優先級高的可以中斷搶佔優先級低的任務。

    當搶佔優先級相同時,首先處理響應優先級高的事件,同搶佔優先級的事件無法中斷響應優先級事件,也就是說當同時發生兩個相同搶佔優先級的事件時,處理器會優先處理響應優先級較高的事件,在處理該事件的時候,無論是否出現同搶佔優先級的更高的響應優先級事件,都會等待該時間處理結束之後再進行比較處理

    如果他們的搶佔式優先級和響應優先級都相等,則根據他們在中斷表中的排位順序決定先處理哪一個。

-------------------------------------------------- -------------------------------------------------- ------------------------------

    我們主要講述外部中斷的觸發。

    首先我們對外部中斷進行外設的配置,建立新的工程之後,進入到主函數中,首先需要對我們用到的功能進行初始化。比如NVIC,GPIO等。之後將GPIO和時鐘中斷線進行連接,我們同樣使用庫函數,比如GPIO_EXTILineConfig()函數進行連接,連接成功之後再將外部中斷線進行配置,配置的結構體再庫函數中由定義:EXTI_InitStructure結構體到此,我們基本完成了外部中斷的配置,接下來就引入到循環中,我們使用whiel(1)來等待外部中斷。

    配置完成之後,我們回到的的Startup.s這個文件中,它裏面定義了中斷向量表,我們選擇我們定義的中斷向量,來實現他。由於STM32的中斷向量大多數是弱弱定義。​​在有我們自己的定義時,來執行我們定義的操作。當終端來臨的時候,進到我們的中斷向量表,之後進入我們的中斷處理程序,比如說中斷處理程序EXTI2_IRQHandler(無效),在這個我們自己實現的中斷處理程序中,我們可以定義在觸發此中斷時需要執行的操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章