STM32中斷相關

2021-08-14 08:38:15 字數 1166 閱讀 4510

一般io口的初始化過程

下面以初始化e埠的0、1、2、3引腳為例。

void mx_gpio_init(void)

在core_cm4.h中定義nvic結構體

typedef

struct

nvic_type;

在配置中斷時,最常用的就是iser、icer和ip這三個暫存器。

iser用來使能中斷,icer用來失能中斷,ip用來設定中斷優先順序。

(1)iser:stm32f407可遮蔽的中斷只有82個。

iser陣列中的每一位對應乙個中斷,要是能某個中斷只要將相應的iser為設定為1即可。

(2)icer:想要失能某個中斷並不是在iser暫存器中寫入0.而是要在ispr暫存器中的對應為寫入1.

(3)ispr:中斷掛起控制暫存器,一位控制乙個中斷,可以將正在進行的中斷掛起,而執行同級或更高階別的中斷。

(4)icpr:與上乙個暫存器作用相反,寫1有效。

(5)iabr:唯讀暫存器,為1表示改位對應的中斷正在執行,在中斷執行完了由硬體自動清零。

(6)ip:中斷優先順序控制器,沒有可遮蔽中斷占用8bit。但是只有高4位被使用。4位又被分為搶占優先順序和響應優先順序(子優先順序)。

優先順序的分組有核心外設scb的應用程式中斷及復位控制暫存器aircr的prigroup[10:8]位決定,有5個可選分組。

nvic相關函式

編號3電路實際是乙個或閘電路,乙個輸入為編號2的電路,另乙個輸入來自軟體中斷事件暫存器(exit_ewier)。exit_ewier允許我們通過程式控制就可以啟動中斷/事件線。

編號3的輸出訊號在進入exit_pr之後,就會把狀態值儲存在exit_pr暫存器對應位上,說明有中斷的發生。在處理完中斷事件後必須對該暫存器位寫「1」清除exit_pr暫存器,使得對應位位0,否則總是會發生中斷請求。

編號4的電路輸出由中斷遮蔽位暫存器和編號3的輸出訊號共同決定,因為為「與」門,只有中斷遮蔽位有效時才會輸出。

STM32 中斷相關

stm32 為了適應不同的優先順序組合,設定了 group 的概念,組是乙個大的框架,在組下分別分配了佔先優先順序與副優先順序。每乙個中斷都有乙個專門的暫存器 interrupt priority registers 來描述該中斷的佔先式優先順序及副優先順序。在這個暫存器中stm32 使用4個二進位...

stm32中斷優先順序 STM32中斷系統

stm32 中斷非常強大,幾乎每個外設都可以產生中斷,因此這裡我們單獨使用一章來介紹它,為後面介紹外設中斷做鋪墊。學習本章可以參考 stm32f10x中文參考手冊 9 中斷和事件章節,cortex m3 權威指南 中文 chpt08 nvic與中斷控制章節。中斷概念 在學習 51 微控制器時,我們就...

STM32中斷巢狀

cortex m3核心支援256個中斷,其中包括16個核心中斷和240個外部中斷,且具有256級的可程式設計中斷設定,而stm32只用了其中一部分。stm32有84個中斷,包括16個核心中斷和68個可遮蔽中斷,具有16級可程式設計中斷優先順序。而我所使用的103系列只有60個可遮蔽中斷。優先順序的判...