STM32中断

STM32的中断由NVIC控制,包括ISER、ICER和IP寄存器进行管理。中断使能、清除和优先级设置涉及misc.c和misc.h库文件。STM32F103支持60个中断通道,每个有4位优先级控制字节,分为抢占和响应优先级。配置步骤包括使能外设中断、设置中断优先级分组及编写中断服务函数。
摘要由CSDN通过智能技术生成

原理

NVIC(Nested Vectored Interrupt Controller)嵌套向量中断控制器,属于 M3 内核的一个外设,控制着芯片的中断相关功能。

在配置中断时,通常使用的只有 ISER、 ICER 和 IP 这三个寄存器, ISER 是中断使能寄存器,ICER 是中断清除寄存器,IP 是中断优先级寄存器。

有关NVIC 中断相关的库函数都在库文件 misc.c 和 misc.h 中,所以当使用到中断时,一定要记得把 misc.c 和 misc.h 添加到工程组中。

STM32F103 芯片支持 60 个可屏蔽中断通道,每个中断通道都具备自己的中断优先级控制字节,用于表达优先级的高 4 位又被分组成抢占式优先级和响应优先级。高抢占式优先级的中断事件会打断当前的主程序或者中断程序运行,俗称中断嵌套。

STM32F103 中指定中断优先级的寄存器位有 4 位,这 4 位的分组方式如下图所示:

步骤

  1. 使能外设中断:具体由外设相关中断使能位来控制,比如定时器有溢出中断,这个可由定时器的控制寄存器中相应中断使能位来控制。
  2. 设置中断优先级分组:初始化 NVIC_InitTypeDef 结构体,设置抢占优先级和响应优先级,使能中断请求。
  3. 编写中断服务函数:中断服务函数有固定的函数名,可以在 startup_stm32f10x_hd.s 启动文件查看,具体实现什么功能还需要自己编写,
typedef struct
{
  uint8_t NVIC_IRQChannel; //中断源
  uint8_t NVIC_IRQChannelPreemptionPriority; //抢占优先级
  uint8_t NVIC_IRQChannelSubPriority; //响应优先级
  FunctionalState NVIC_IRQChannelCmd; //中断使能或失能
} NVIC_InitTypeDef;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值