实例讲解,单片机常用中断控制子程序
单片机系统中,应用最多的中断方式是中断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-
*本文系网络转载,版权归原作者所有,如有侵权请联系删除
相关问答
c51 单片机中断 响应的四个步骤?单片机一旦响应中断请求,就由硬件完成以下功能:(1)根据响应的中断源的中断优先级,使相应的优先级状态触发器置1;(2)执行硬件中断服务子程序调用,并把...
单片机 的外部 中断 仿真 实验 。在 单片机 P1口上接有8只LED。在外部 中断 0输入引脚(P3.2)接一只按钮开关K1?中断处理函数感觉有些问题,for循环之前使用P1=0x0f;然后将for内的P1=0x0f;改为P1=~P1;同时for循环中应该需要调用延时函数Delay(10);这里的值看你自...
单片机 中 中断 服务程序过长会有什么后果?中断服务程序过长,可能会出现两种情况:1.运行时间过长,影响同优先极及低优先级的中断的响应,可能单片机就忙着处理中断去了,进而影响后台程序的运行;高优...
单片机中断 看的我直蒙-ZOL问答CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断...
单片机中断 初始化程序?voidINT_init()//初始化{IT0=0;//外部中断0低电平触发IT1=1;//外部中断1低电平触发PX0=1;//外部中断0分配高优先级PX1=0;IE=0x85;//使能全局中断,外部...
单片机中断 程序的编程实例?下面是一个简单的单片机中断程序的编程实例,以8051单片机为例:```assemblyORG0H;程序从地址0开始MOVA,#0FFH;将A寄存器初始化为0xFFMOVP1,...
单片机中断 的基本原理?单片机中断是通过定时器触发的。每个定时器都有4种工作模式,可通过设置TMOD寄存器中的M1M0位来进行工作方式选择。定时器一但启动,它便在原来的数值上开始加1...
单片机中断实验 ,为什么设置SP的值?这个跟SP初值有关,上电后的初始值为07H,有可能和程序中的数据冲突,为了避免数据存储冲突,把SP修改为60H或其他值。避免堆栈区和数据变量区相重叠。这个跟SP...
单片机 外部 中断实验 (急救车与交通灯)怎么延时闪烁?在单摆的中间放一个红外对管,这样单摆每过一次中间就会有一个脉冲信号。这个脉冲信号连接外部中断,通过中断来统计次数。再用定时器定时1秒,1秒后把中断次数输...
单片机中断 系统讲解?单片机中断系统是单片机的重要组成部分,它能在程序执行过程中接收来自外部设备的中断信号,立即暂停当前任务转而处理新来的中断。单片机中断系统通常包括中断...