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

 

二、External interrupt/event controller(EXTI)

1、EXTI_Init函数

void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);

根据EXTI_InitStruct初始化外设EXTI寄存器

参数EXTI_InitStruct:指向结构EXTI_InitTypeDef的指针,包含外设EXTI的配置信息

typedef struct
{
  uint32_t EXTI_Line;   //选择了待使能或者失能的外部线路。
  EXTIMode_TypeDef EXTI_Mode;   //设置被使能线路的模式

  EXTITrigger_TypeDef EXTI_Trigger; //设置被使能线路的触发边沿

  FunctionalState EXTI_LineCmd;   //用来定义选中线路的新状态,它可以被设置成ENABLE或者DISABLE
}EXTI_InitTypeDef;

例如

    EXTI_InitTypeDef EXTI_InitStructure;
    EXTI_InitStructure.EXTI_Line = EXTI_Line0;
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值