STM32 NVIC巢狀向量中斷控制器函式分析

2021-08-07 07:20:22 字數 2517 閱讀 5857

中斷管理函式

cm3核心支援256個中斷,其中包含了16個核心中斷和240個外部中斷,並且具有256級的可程式設計中斷設定。但stm32並沒有使用cm3核心的全部東西,而是只用了它的一部分。

stm32有76個中斷,包括16個核心中斷和60個可遮蔽中斷,具有16級可程式設計的中斷優先順序。而我們常用的就是這60個可遮蔽中斷,所以我們就只針對這60個可遮蔽中斷進行介紹。

typedef struct

nvic_typedef;

iser[2]:interrupt set enable registers 中斷使能暫存器組

icer[2]:interrupt clear enable registers 中斷除能暫存器組

ispr[2]:interrupt set pending registers 中斷掛起暫存器組

icpr[2]: interrupt clear pending registers 中斷解掛暫存器組

iabr[2]:interrupt active bit registers 中斷啟用標誌暫存器組

主要分析

ipr[15]:interrupt priority registers   中斷優先順序控制暫存器組

使用函式實現中斷分組:  可選分組0--4

my_nvic_prioritygroupconfig(u8 nvic_group)

語句解讀:

temp1=(~nvic_group)&0x07;      由於

所以組號取反與111 即得到分組所需暫存器值

金鑰使用函式實現中斷優先順序設定:

void my_nvic_init(u8 nvic_preemptionpriority,u8 nvic_subpriority,u8 nvic_channel,u8 nvic_group)

exti_typedef;

imr:中斷遮蔽暫存器interrupt mask register         32位暫存器前19位有效

emr: 事件遮蔽暫存器 event mask register               32位暫存器前19位有效

rtst: 上公升沿觸發選擇暫存器 rising edge trigger select register

ftsr:下降沿觸發選擇暫存器 falling edge trigger select register

swier:軟體中斷事件暫存器 software interrupt event register

pr:   掛起暫存器 pending register

i/o口復用裡的配置暫存器exticr     每個i/o口可以配置成中斷輸入

stm32 任何乙個io口都可以配置成中斷輸入口,但是io口的數目遠大於中斷線數(16個)。於是stm32就這樣設計,gpioa~gpiog的[15:0]分別對應中斷線15~0。這樣每個中斷線對應了最多7個io口,以線0為例:它對應了gpioa.0、piob.0、gpioc.0、gpiod.0、 gpioe.0、gpiof.0、gpiog.0。而中斷線每次只能連線到1個io口上,這樣就需要exticr來決定對應的中斷線配置到哪個gpio上了。

exticr在afio的結構體中定義如下

typedef struct

afio_typedef;

extirc暫存器總共4個,因為編譯器的暫存器都是從0號開始的,所以exticr[0]---exticr[3]對應

<外部中斷配置函式:

void ex_nvic_config(u8 gpiox,u8 bitx,u8 trim)

注:trim為觸發方式選擇變數; 0x01下降沿觸發   0x02 上公升沿觸發 0x03任意電平觸發.

STM32 NVIC巢狀向量中斷控制器函式分析

中斷管理函式 cm3核心支援256個中斷,其中包含了16個核心中斷和240個外部中斷,並且具有256級的可程式設計中斷設定。但stm32並沒有使用cm3核心的全部東西,而是只用了它的一部分。stm32有76個中斷,包括16個核心中斷和60個可遮蔽中斷,具有16級可程式設計的中斷優先順序。而我們常用的...

STM32NVIC中斷優先順序

cm3核心共支援256個中斷,其中包含了16個核心中斷,240個外部中斷,並且具有256級可程式設計中斷設定。但是stm32並沒有使用cm3核心全部的東西,stm32有84個中斷,其中包含了16個核心中斷,68個可遮蔽中斷,具有16級可變陳的中斷優先順序。typedef struct nvic ty...

STM32 NVIC 中斷優先順序管理

這裡以stm32f4系列為例。先簡單介紹下stm32f4的中斷分組,stm32f4將中斷分為5個組,組0 4.該分組的設定是有scb aircr暫存器的bit 10 8來定義的。具體分配關係如下表 假設說組設定為2,那麼此時每個中斷的中斷優先暫存器的高四位中的最高兩位是搶占優先順序,低兩位是響應優先...