产品选型

单片机接收中断 实例讲解,单片机常用中断控制子程序

小编 2025-06-06 产品选型 23 0

实例讲解,单片机常用中断控制子程序

单片机系统中,应用最多的中断方式是中断I/O方式。中断I/O方式提供了5个中断源,即两个外部输入中断源INT0(P3.2或称为外部中断源0)和INT1(P3.3或称为外部中断源1),两个片内定时器T0和T1的溢出中断源TF0和TF1,一个片内串行口发送或接收中断源TI或RI。

中断由中断控制寄存器控制,不论哪个中断,都必须进行初始化,中断响应必须有中断响应程序。5个中断的控制编程如下。

小白的单片机之旅——串口接收-中断方式

上一节我们一起看了基于轮询方式的串口接收实现,一言以蔽之,基本逻辑在我需要的时候去等待一个状态标记,如果满足条件则从对应的数据寄存器里把数据取出来即可。那么基于中断方式的串口接收是怎么工作呢?

中断,顾名思义,就是说一个我不知道什么时候会发生的“事件”发生了,我应该做出相应的反应。其直观的感觉就类似我们通过鼠标去执行一个操作,在设计的时候,点击这个操作是由用户决定的,设计者需要指定的就是注册一个事件,注册的时候指定该事件发生的时候,我们应该执行什么回调即可。是的,简单来看使用某个中断,就像是指定该中断的回调即可。当然了,我们这里说的硬件的中断跟那个注册鼠标的事件回调还是有很大不同的,具体差异就不细说啦,不过基本逻辑差不多。

话不多说,我们一起看看基于中断的串口接收是如何实现的吧。

基本的初始化流程同上节(当然一样来都是基本的硬件配置),多出的一部分就是对应的中断初始化。

中断初始化

一个简单的测试代码主逻辑,就是死循环,对应的测试代码放在中断里执行。

串口接收中断简单测试代码主逻辑

这里我们定义了一个中断回调函数USART1_IRQHandler,那为啥是这个函数名字呢?是否可以随便定义?当然可以随便定义,但是需要注意的是要和start文件(就是前面介绍的.s文件)中的中断向量表中的名字一致,我们看看对应的中断向量表中是什么名字呢?

根据编译要求,这个接口既然已经引用了,那之前我们没有使用该中断,也就是没有定义个这接口的时候为什么没有发生编译报错呢?因为.s文件还有如下定义。weak关键字,简而言之,如果我们定义了就使用我们的定义,如果我们不定义就用默认定义。

实测效果如下:

初步达到了我们的目的。当然了,轮询法和中断法实现串口接收各有其应用场景,具体使用时应该按照具体的应用场景灵活运用即可。当然了,除了轮序、中断,STM32还提供了基于DMA的能实现更高吞吐和效率的方法,这里不再展开细讲啦。我们再简而言之,带了DMA就相当于接收中断来了之后不需要cpu介入,硬件会自动往已经配置好的地址去填写数据,等填满或者填到一半的时候通过dma的相关中断告诉cpu,cpu只需要这时候介入,将已经填好的数据去使用即可,优势在哪一目了然。

相关问答

51 单片机 中断 源 和 中断 入口?

51单片机的中断源就是指能够打断当前顺序执行的功能模块,比如外部中断事件源,定时器中断事件源,通讯模块数据发送接收中断源等。中断入口是指打断当前顺序执行...

单片机 等待 中断 指令?

在单片机编程中,等待中断指令通常使用“while”循环来实现。例如,在C语言中,可以使用以下代码来等待中断:c复制while(1){//等待中断的代码}在上面的代码...

51 单片机中断 如何关闭?

51的串口中断,接收和发送是共用一个中断向量的,没法单独关闭。一般在中断服务函数中检测TI标志并及时清零就可以了。1、在中断服务程序里,关闭中断允许标志当...

51汇编计时器为什么能 接收中断 ?

1、单片机的中断是一个很高明的办法。没有中断时单片机只会顺序执行主程序中的语句。2、单片机的定时器有自己的时钟,打开51单片机的定时器后,单片机一边顺序...

51 单片机 如何用外部 中断 来停止定时器的工作,然后再用此中断程序来实现中断返回?

利用一个变量做标志来做处理,外部中断出发后将这个标志置1,然后在主函数里面判断这个变量,如果标志为1,那么TR0或者TR1就等于1(运行定时器),再次出发外部...

单片机 两种 中断 触发方式的区别?“低电平触发是当管脚INTO/IN...

[最佳回答]这个你可以看看单片机的电气参数。。。高低电平变化的门槛电压,陡度要求。。。。。

51 单片机 串口通信,下面的何时发生 中断 ?为什么要加一个flag=...

这里我给你解释一下flag=1;的作用,比如串口调试助手,发送数据单片机自动开启接收中断,接收RI=1;当单片机接收数据完成后,必须软件进行清零RI=0,说明...

串口进入不了 中断 模式如何解决?

串口接收中断进不去,如何解决?是单片机的串口接收中断吗?要设置中断标志位呀,串口接收方式也要对呀,设置波特率。SCON=0X50;EA=1;ES=1;TMOD=0X20;TH1...

外部 中断 0和外部 中断 1的触发方式?

国内外生产的51单片机,在外部中断0/外部中断1触发方式上略有不同。以ATMEL和飞利浦为代表的51单片机采用了边沿触发和电平触发方式,例如AT89C系列,外部中断既...

单片机 如何利用 中断 进行复位?

谢谢邀请:1.题主你提出的问题好像本身就有问题,首先通过按压一个按键使单片机复位的方法,这个跟中断没有关系,每一个单片机系统都可以设计一个复位电路,这个...

猜你喜欢