STM32中断系统

文章目录

    • 中断介绍
      • 中断概念
      • NVIC介绍
      • 常用寄存器
      • 中断优先级
    • 中断配置

中断介绍

中断概念

中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。STM32中断系统_第1张图片

NVIC介绍

NVIC的英文全称是Nested vectored interrupt controller,中文意思就是嵌套向量中断控制器,它属于M3内核的一个外设,控制着芯片的相关中断功能。STM32中断系统_第2张图片
1.CM3内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。

2.STM32进行了裁剪,STM32有84个中断,包括16个内核中断和68个可屏蔽中断,具有16级可编程的中断优先级。

3.STM32F103系列上面,又只有60个可屏蔽中断(在107系列才有68个)

常用寄存器

typedef struct
{
  __IO uint32_t ISER[8];    //中断使能寄存器
       uint32_t RESERVED0[24];                                   
  __IO uint32_t ICER[8];   //中断失能寄存器
       uint32_t RSERVED1[24];                                    
  __IO uint32_t ISPR[8];   //中断挂起寄存器
       uint32_t RESERVED2[24];                                   
  __IO uint32_t ICPR[8];  //中断解挂寄存器
       uint32_t RESERVED3[24];                                   
  __IO uint32_t IABR[8];  //中断激活标志位寄存器
       uint32_t RESERVED4[56];                                   
  __IO uint8_t  IP[240]; //中断优先级控制寄存器
       uint32_t RESERVED5[644];                                  
  __O  uint32_t STIR;   //中断软触发中断寄存器
}  NVIC_Type; 

中断优先级

STM32的优先级分为抢占式优先级和响应优先级,优先级数值越小,优先级别越高。

判断方法:1.先看抢占式优先级,它起着决定性的作用,当抢占式优先级比较高时,优先级最高
2.当抢占式优先级相同时,再看响应优先级,响应优先级高的优先级高
3.当抢占式优先级和响应优先级都相同时,则看哪个中断先发生就先执行
4.当一个中断正在执行时要产生嵌套,那么只看抢占式优先级,不看响应优先级

STM32中断系统_第3张图片
可以通过调用STM32的固件库中的函数NVIC_PriorityGroupConfig()选择使用哪种优先级分组方式

NVIC_PriorityGroup_0 => 选择第0组
NVIC_PriorityGroup_1 => 选择第1组
NVIC_PriorityGroup_2 => 选择第2组
NVIC_PriorityGroup_3 => 选择第3组
NVIC_PriorityGroup_4 => 选择第4

中断配置

1.使能外设中断

2.设置中断优先级分组,初始化NVIC_InitTypeDef 结构体

typedef struct
{	
	uint8_t NVIC_IRQChannel;  				  //中断通道
	uint8_t NVIC_IRQChannelPreemptionPriority;//抢占式优先级
	uint8_t NVIC_IRQChannelSubPriority;      //响应优先级
	FunctionalState NVIC_IRQChannelCmd;     //中断使能

}NVIC_InitTypeDef;

3.编写中断服务函数

你可能感兴趣的:(STM32,笔记,stm32,单片机,arm)