1. 程式人生 > >STM32入門學習筆記之Interrupts and events

STM32入門學習筆記之Interrupts and events

 

 

一、Nested vectored interrupt controller (NVIC巢狀向量中斷控制器)

用於為中斷分組,從而分配搶佔優先順序和響應優先順序

根據STM32的中斷數量,分成5組

1、NVIC_PriorotyGroupConfig函式

Void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)

設定優先順序分組:先佔優先順序和從優先順序

NVIC_PriorityGroup_0    先佔優先順序0位,從優先順序4位

NVIC_PriorityGroup_1   先佔優先順序1位,從優先順序3位

NVIC_PriorityGroup_2   先佔優先順序2位,從優先順序2位

NVIC_PriorityGroup_3   先佔優先順序3位,從優先順序1位

NVIC_PriorityGroup_4   先佔優先順序4位,從優先順序0位

2、NVIC_Init()函式

Void NVIC(NVIC_InitTypeDef *NVIC_InitStruct)

根據NVIC_InitStruct中指定的引數初始化外設NVIC暫存器

引數NVIC_InitStruct:指向結構NVIC_InitTypeDef的指標,包含了中斷的資訊

            NVIC_IRQChannel:中斷源

            NVIC_IRQChannelPreemptionPriority:搶佔優先順序                

            NVIC_IRQChannelSubPriority:響應優先順序

            NVIC_IRQChannelCmd:中斷使能

例如:

NVIC_InitTypeDef NVIC_InitStructure;

//設定優先順序分組

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

//選擇外部中斷線0中斷

NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority  = 2;

//使能該通道

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);