stm32中断系统

在处理器中,中断是一个过程,即CPU在正常执行程序的过程中,遇到外部或者内部的紧急事件需要去处理,必须暂停当前处理事件,转而去为处理更加紧急的事件,待处理完毕后再返回被打断的程序处继续往下执行。例如:当无人机超过了遥控器的控制范围,需要立刻停止其他事件,进行下降事件,这是当下最紧急的事情。一般我们称中断为异常事件。且stm32所有的I/O都可以配置中断。
中断分为了两个类型:内部中断和外部中断。并将所有中断通过一个表编排起来,下面是stm32中断向量表的部分内容:
在这里插入图片描述
在这里插入图片描述

上图-3到6这个区域被标黑了,这个区域就是内部中断。内部中断不能够被打断,不能被设置优先级(也就是说优先级是高于外部中断之上的)。常见的内部中断有以下几种:复位(reset),不可屏蔽中断(NMI),硬错误(Hardfault),更多请参考上帝之手(stm32fxxx.h)

从第7个开始,后面所有的中断都是外部中断。包含线中断,定时器中断,串口,IIC,SPI等所有的外设中断,可配置优先级。外部中断的优先级分为两种:抢占优先级和响应优先级。且中断被响应先后顺序:
1.抢占式优先级不同:
高抢占式优先级的中断可以在具有低抢占式优先级的中断在执行的过程中可以被响应,即中断嵌套。
2.抢占式优先级相同:
当一个中断来到后,另一个中断正在被处理,后来的中断被挂起,等当前的中断处理完后才能被处理。(没有中断嵌套)
当两个中断同时到达,且没有中断正被执行,则中断控制器根据它们的响应优先级高低来决定先处理哪个。
3.抢占式优先级,响应优先级都相同:
根据它们在中断向量表的排位顺序决定先处理哪一个。
每个可屏蔽中断占8bit只用了高四位进行抢占优先级和响应优先级的配置。且必须先调用void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);进行分组

        NVIC_PriorityGroup_0    #抢占优先级占0bits, 响应优先级占4bits
		NVIC_PriorityGroup_1    #抢占优先级占1bits, 响应优先级占3bits
		NVIC_PriorityGroup_2    #抢占优先级占2bits, 响应优先级占2bits
		NVIC_PriorityGroup_3    #抢占优先级占3bits, 响应优先级占1bits
		NVIC_PriorityGroup_4    #抢占优先级占4bits, 响应优先级占0bits

stm32中断配置思路
配置中断优先组。
NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);
配置中断优先级,开启中断通道。
NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);
配置使能相应外设的中断。
不同外设的配置函数有差异。如外部中断使用EXTI_Init(),串口使用USART_ITConfig()。
编写相应中断的中断服务函数。
xxx_IRQHanlder()(尽量在stm32fxxit.c中编写,且函数名不能改变,因为事先已经定义好了,我们调用改变函数体即可)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

<往事随风>

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

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

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

打赏作者

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

抵扣说明:

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

余额充值