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);

猜你喜欢

转载自blog.csdn.net/weixin_39887334/article/details/84983480