STM32(中断)

1.中断的基本概念

中断:单片机应对突发事件的一种方式

中断响应函数:编程人员提前准备好的函数,当程序被中断,单片机会自动调用中断响应函数。

2.中断编程举例

明确一点,数据读取不及时会造成当前数据被新数据覆盖。

我们这次是在小灯闪烁过程中需要接收数据。

如果我们只能这样读取数据,等到了亮灭完之后,会导致图中两个部分数据点丢失。

为此我们进行中断,遇到数据传输就中断当前亮灭操作,转手进行接收数据,这样就不会再造成数据丢失。

3.中断优先级的概念

我们需要优先处理突发且紧急的事情。

中断优先级——用数字表示中断的紧急程度。

4.中断优先级的表示方法

抢占中断优先级的数字越小,越优先处理。

NVIC:嵌套向量中断控制器

这个图是大概的流程,这里不过多研究,后续还有EXTI模块的研究。

这个图比较重要,首先我们明白这个优先级有一条线,左边是抢占优先级,右边是子优先级。

如本图右边部分所示,我们读取抢占优先级和子优先级的时候,需要注意你读到的就是这个数的二进制数。

举个例子,我们向分组0到分组4都写入1011.

那么,分组0的抢占优先级为0,子优先级为11.

分组1的抢占优先级为1,子优先级为3.

分组2的抢占优先级为2,子优先级为3.

分组3的抢占优先级为5,子优先级为1.

分组4的抢占优先级为11,子优先级为0.

最后,抢占优先级和子优先级的数字越小,优先度就越高。

5.抢占优先级与中断嵌套

抢占优先级:专业插队的,如果抢占优先级高,他就可以打断当前的中断,在当前中断中形成中断嵌套。

中断嵌套:更高优先级的中断打断当前的中断。

类似于这张图。

6.子占优先级与中断排队

子占优先级:如果抢占优先级和当前执行的一样,不会打断当前执行的任务,后续的按照子占优先级和顺序进行排队。

具体排队规则:

1.子占优先级高的在前面。

2.优先级相同则根据先来后到排队。

等到执行完当前的事件就会逐步处理后续事件。

如图,这个触发中断的条件是或运算,有1他的输出就会是1

还是用到这张表,我们NVIC配置有这么几个地方,

第一个地方就是划分我们数据的那些部分是抢占优先级,哪些部分是子占优先级。

第二个地方就是填入数据,让我们的机器能知道各个优先级里面的数字。

第三个地方就是我们需要闭合NVIC那边的开关,只有给他使能了才能正常中断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值