STM32中斷NVIC的概念及中斷程式設計步驟

2021-10-11 21:05:21 字數 1442 閱讀 3525

二、 優先順序的定義

三、中斷程式設計步驟

stm32中斷非常強大,每個外設都可以產生中斷

nvic 是巢狀向量中斷控制器,控制著整個晶元中斷相關的功能,它跟核心緊密耦合,是核心裡面的乙個外設。

nvic 結構體定義,來自韌體庫標頭檔案:core_cm3.h

在配置中斷的時候我們一般只用 iser、icer 和 ip 這三個暫存器,iser 用來使能中斷,icer 用來失能中斷,ip 用來設定中斷優先順序。

韌體庫檔案 core_cm3.h 的最後,還提供了 nvic 的一些函式,這些函式遵循 cmsis 規則

在 nvic 有乙個專門的暫存器:中斷優先順序暫存器 nvic_iprx,用來配置外部中斷的優先順序,ipr 寬度為 8bit,原則上每個外部中斷可配置的優先順序為 0~255,數值越小,優先順序越高。

優先順序的分組由核心外設 scb 的應用程式中斷及復位控制暫存器 aircr 的prigroup[10:8]位決定,f103 分為了 5 組,具體如下:主優先順序=搶占優先順序

具體由每個外設的相關中斷使能位控制。

1

typedef

struct

nvic_inittypedef;

1)nvic_irochannel:用來設定中斷源,不同的中斷中斷源不一樣,且不可寫錯,即使寫錯了程式也不會報錯,只會導致不響應中斷。具體的成員配置可參考 stm32f10x.h 標頭檔案裡面的 irqn_type 結構體定義,這個結構體包含了所有的中斷源。

2)nvic_irqchannelpreemptionpriority:搶占優先順序,具體的值要根據優先順序分組來確定,具體參考** 17-5 優先順序分組真值表 。

3)nvic_irqchannelsubpriority:子優先順序,具體的值要根據優先順序分組來確定,具體參考** 17-5 優先順序分組真值表 。

4)nvic_irqchannelcmd:中斷使能(enable)或者失能(disable)。操作的是 nvic_iser 和 nvic_icer 這兩個暫存器。

在啟動檔案 startup_stm32f10x_hd.s 中我們預先為每個中斷都寫了乙個中斷服務函式,只是這些中斷函式都是為空,為的只是初始化中斷向量表。實際的中斷服務函式都需要我們重新編寫,為了方便管理我們把中斷服務函式統一寫在 stm32f10x_it.c 這個庫檔案中。

STM32中斷的概念

中斷,個人理解即為乙個突發的任務打斷了正在進行的任務。中斷分為兩類 1.系統中斷,體現在核心。2.外部中斷,體現在外設。nvic 向量中斷控制器 是乙個核心外設,通過nvic管理核心以及片上外設的中斷。中斷優先順序 搶占優先順序 響應優先順序 1.搶占優先順序高的中斷可以打斷搶占優先順序低的中斷。2...

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個可遮蔽中斷。優先順序的判...