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那边的开关,只有给他使能了才能正常中断。