实例讲解,单片机常用中断控制子程序
单片机系统中,应用最多的中断方式是中断I/O方式。中断I/O方式提供了5个中断源,即两个外部输入中断源INT0(P3.2或称为外部中断源0)和INT1(P3.3或称为外部中断源1),两个片内定时器T0和T1的溢出中断源TF0和TF1,一个片内串行口发送或接收中断源TI或RI。
中断由中断控制寄存器控制,不论哪个中断,都必须进行初始化,中断响应必须有中断响应程序。5个中断的控制编程如下。
单片机的这些中断事件你都了解了么?STM32中断分析
STM32中断分析
中断一直是单片机中非常重要的一个内容,本此我们来分析一下STM32中的中断模块。希望本此的分享能够让大家对中断有一个比较清晰的认识。
在单片机中,通知事件发生的中断信号一般来自于外部INT引脚的输入信号,或是来自定时器、串行I/F等内部的外围功能电路的信号。接收中断信号的是中断控制器。中断控制器根据产生的中断信号的优先级,按优先级顺序发送给CPU。当然,被设定为无效的设备所传送来的中断信号是不会传给CPU的,您也可以屏蔽或忽略它们。CPU根据从中断控制器接收到的指示,执行相应的程序(中断处理)。
中断就是程序在正常运行的过程中发生了不正常的事情,必需要暂停一下去处理这个不正常的事情,其次跑回来继续干正常的事情。它是M4内核的一种实时硬件查询机制。它的发生条件是未知的。我们把这种不正常的事情呢称作异常,异常事件会发生,而发生的时长不确定,一旦发生了异常事件的话立刻去执行。
///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程和毕业设计指导,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像白色字体加我也能领取哦,记得口令一哥///
正常运行的程序是主函数(main),代码是由CPU运行的。CPU在主函数里运行是正常的执行过程,当在这个过程中忽然发生了异常事件(中断),CPU必需暂停当前的工作(设下断点),其次跑去能处理这个异常事件的函数中做异常处理(中断效劳函数),处理完这个异常事件后(执行完中断效劳函数),CPU就会跑回刚刚的断点处,继续正常运行下去。
这个过程里面有个设下断点的过程,这个断点是以栈的方式存储的,如图所示:
同时,中断也是可以嵌套的,在发生中断事件的过程中,可以有优先级高于上一个异常事件的异常来打断上一个中断,过程可以如图所示:
下面想要分析的是主函数与中断效劳函数的关系,我们都知道主函数能够调用子函数,子函数也能够调用子函数,而子函数不能调用主函数。对于中断效劳函数来说,中断效劳函数与主函数不存在调用关系,它们是平级的。
对于中断效劳函数我们须要注意的是,中断效劳函数是有对应的名称的,我们最好自己去复制,不用自己手打,容易出错,假如错任何一个字母的话,就会成为一个普通的函数。同时,中断效劳函数自身都是没返回值没形参的,因此不能随意写成别的。
对于中断的优先级,中断的优先级和C语言的运算符的优先级一样,数字越小,优先级越高。在中断分为三种优先级:占先优先级,次级优先级也叫响应优先级,最后一个是自然优先级。由于自然优先级根本不参与判断优先级高低,因此我们省略自然你优先级即可。
假如此时有三个事件A、B、C,他们的优先级分别为,A:占先优先级1,次级优先级5,B:占先优先级2,次级优先级2,C: 占先优先级2,次级优先级3。那么假如事件A与事件B同时到来:先执行A;事件B与事件C同时到来:先执行B;事件C正在执行,事件B到来:事件B不能打断事件C的执行。事件C正在执行,事件A到来:事件B能够打断事件C的执行。所以总结就是,假如两个时长同时到来,先鄙偃较占先优先级,再比较次级优先级,按高低分先后;其次独有后面的事件占先优先级高才能够打断前面的事件,否则不行。
中断的优先级会依照ST公司的优先级分组表来确定事件的占先优先级和次级优先级,它是由ARM公司下的ARM架构取出来的局部优先级作为选取的分组的。
理论部分暂时分析这么多,相信大家对于STM32的中断内容有了一个初步的认识,希望大家能够自己利用更多空余事件多多了解其他的内容,丰富自己的知识储备
想要学习单片机的朋友 ,做毕业设计的同学,关注我们,口令一哥,与导师一起学习成长,共同进步,还有更多资料领取。
说了这么多,大家记得留意下方评论第一条(或者私信我)有干货~
-END-
*本文系网络转载,版权归原作者所有,如有侵权请联系删除
相关问答
单片机中断 是怎么保存原来的数据然后继续执行的? - 懂得单片机中断发生后,只是自动保存了断点地址,并不保存数据。数据,需要你自己编程来解决。怎么保存原来的数据?保存到堆栈也行,保存到别处也行,你可以...
单片机 中 中断 服务程序过长会有什么后果?中断服务程序过长,可能会出现两种情况:1.运行时间过长,影响同优先极及低优先级的中断的响应,可能单片机就忙着处理中断去了,进而影响后台程序的运行;高优...
单片机的中断源 如何清零是每经过1个到7个(根据中断源不同中断响应时间也不同)中断一次,相当于陷入死循环~中断请求源:(1)外部中断请求源:即外中断0和1,经由外部引脚引入...
stc15系列 单片机中断 响应过程?首先开中断,包括各个中断源和总中断,并设置中断触发条件,如定时器初值,低电平触发还是下降沿触发,然后运行主程序,中断条件具备时,转入中断程序,中断程...首...
单片机 外部 中断实验 (急救车与交通灯)怎么延时闪烁?在单摆的中间放一个红外对管,这样单摆每过一次中间就会有一个脉冲信号。这个脉冲信号连接外部中断,通过中断来统计次数。再用定时器定时1秒,1秒后把中断次数输...
c51 单片机中断 系统的初始化应该包括哪几个步骤?初始化程序应完成如下工作:对TMOD赋值,以确定T0和T1的工作方式。计算初值,并将其写入TH0、TL0或TH1、TL1。中断方式时,则对IE赋值,开放中断。使TR0或TR1...
51 单片机 如何实现 中断 响应及处理?中断响应是CPU对中断源中断请求的响应,包括保护断点和将程序转向中断服务程序的入口地址(通常称矢量地址)。首先,中断系统通过硬件自动生成长调用指令(LACLL)...
单片机中断的 含义?中断就是指处理机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。...
单片机 系统 中断 后如何判断 中断 点的位置?1需要一定的方法和技巧才能准确判断中断点的位置。2中断点的位置通常可以通过中断向量表(interruptvectortable)来确定。中断向量表是一个存储中断处理程...
为什么51 单片机 定时器 中断 程序不执行?1、单片机的中断是一个很高明的办法。没有中断时单片机只会顺序执行主程序中的语句。2、单片机的定时器有自己的时钟,打开51单片机的定时器后,单片机一边顺序...