STM32中断系统

本文详细介绍了中断的概念,重点讲解了STM32中的NVIC(Nested Vectored Interrupt Controller),包括其功能和STM32对NVIC的裁剪情况。文章还阐述了中断的优先级设置,分为抢占式和响应优先级,并提供了配置中断的步骤。通过NVIC的寄存器如ISER、ICER等进行中断的启用、禁用和管理。最后,提到了中断优先级分组以及如何通过NVIC_PriorityGroupConfig()函数进行配置。

中断介绍

中断概念

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

NVIC介绍

NVIC的英文全称是Nested vectored interrupt controller,中文意思就是嵌套向量中断控制器,它属于M3内核的一个外设,控制着芯片的相关中断功能。在这里插入图片描述
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的固件库中的函数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.编写中断服务函数

评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

让记忆定格1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值