STM32–中断使用(超详细!)

STM32–中断使用(超详细!)本文主要讲解了 STM32 单片机的中断使用 主要内容有 中断的概念 NVIC EXIT 的介绍 以及中断使用的步骤

大家好,欢迎来到IT知识分享网。

写在前面:前面的学习中,我们接触了STM32的第一个外设GPIO,这也是最常用的一个外设;而除了GPIO外,中断也是一个十分重要且常用的外设;只有掌握了中断,再处理程序时才能掌握好解决实际问题的逻辑思路。此节我们学习STM32的中断;

    在前面51的学习中,我们也介绍过中断的内容,但是相对于32来说,52的中断十分简单,只有5个中断源,中断的优先级,响应函数也是比较简单的,感兴趣的读者可以看一下下面的这篇博客。

CSDNhttps://mp.csdn.net/mp_blog/creation/editor/

目录

一、什么是中断

二、 NVIC(中断管家)

2.1 NVIC基本概念

2.2 NVIC相关寄存器 

2.3 NVIC工作原理 

2.4 中断优先级 

2.5 NVIC使用(STM32)

三、EXIT(外部中断控制)

3.1 EXIT基本概念

3.2 EXIT工作原理

3.3 EXIT相关寄存器

3.4 EXIT线与IO映射关系

四、中断的使用

4.1中断的使用步骤

4.2EXIT的配置步骤

4.3通用外设驱动

4.4中断回调机制(HAL库)

五、硬件设计 

5.1实现功能

5.2原理图

六、程序设计

6.1程序设计流程图

6.2中断初始化函数 

6.3中断服务函数

6.4中断处理回调函数

6.4源码

6.5实验现象

一、什么是中断

中断:打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行;

STM32--中断使用(超详细!)

举例:当你正在写作业时,做到一半又去吃饭,吃完饭后又回来接着原来的作业继续完成。 

        对于单片机来说,中断是指CPU正在处理某个事件A,发生了另一件事件B,请求CPU迅速去处理(中断发生);CPU暂时停止当前的工作(中断响应),转去处理事件B(中断服务);待CPU处理事件B完成后,再回到原来的事件A(断点)继续执行,这一过程称之为中断。

中断的作用和意义:

1.实时控制:在确定的时间内对相应事件做出相应;例如:温度控制;

2.故障处理:检测到故障,需要第一时间进行处理;

3.数据传输:不确定数据何时会来,利用中断进行控制;

中断的作用:高效处理紧急程序,并且不会占用CPU资源。

STM32 GPIO外部中断简图:

STM32--中断使用(超详细!)

下面将分别对上述过程中的各个部分进行详细的描述;

二、 NVIC(中断管家)

2.1 NVIC基本概念

    NVIC 即嵌套向量中断控制器,全称 Nested vectored interrupt controller。属于是内核的器件,其作用是对STM32中的中断进行管理,因为M3内核中的中断数量很多,当同时出现多个中断时,优先处理哪个中断?以及那些中断不处理等,都要靠NVIC 进行控制。M3 内核都是支持 256 个中断,其中包含了 16 个系统中断 240 个外部中断,并且具有 256 级的可编程中断设置。

    NVIC支持:256个中断(16个内核+240个外部);支持256个优先级。

   但是对于ST公司来说,用不了M3内核中的所有中断以及中断优先级,进而对其进行了一定的裁剪。STM32中共有10个内核中断,60个外部中断,16个中断优先级;

        在中断的使用中还有一个极其重要的一部分为中断服务函数(触发中断后,系统执行的部分,例如上文的吃饭过程)中断服务函数是中断的入口。

中断向量表:

定义一块固定的内存,以4字节对齐(32位),用于存放终端服务函数的首地址,系统已经将中断服务函数定义好了,放在中断向量表中,我们只需要进行调用即可。例如下面的中断向量表:

STM32--中断使用(超详细!)

具体可参考:STM32F103的中文参考手册(9.1.2中断和异常向量)

在程序中的定义为:

STM32--中断使用(超详细!)

中断向量表定义在启动文件中,发生中断时,CPU会自动执行对应的额中断服务函数;

STM32--中断使用(超详细!)

2.2 NVIC相关寄存器 

NVIC相关的寄存器有很多,但是重要的有以下几个,也是需要进行掌握的:

名称 位数 个数 作用
中断使能寄存器(ISER) 32 8 每一位控制一个中断(打开)
中断失能寄存器(ICER) 32 8 每一位控制一个中断(关闭)
应用程序中断及复位控制寄存器(AIRCR) 32 1 位[10:8]控制中断优先级分组
中断优先级寄存器IPR 8 240 8个位对应一个中断,而STM32只使用高4位

1、ISER与ICER寄存器共有32*8=356,用于控制240个中断的打开与关闭;

2、AIRCR寄存器,位10、9、8三位用于控制优先级的分组,三位共2*2*2=8种,取其中的5组作为中断优先级的分组情况;

3、IPR寄存器,用于控制中断的优先级,包括抢占优先级与响应优先级,高4位控制,至于哪几位控制抢占,哪几位控制响应,由AIRCR寄存器说了算;

2.3 NVIC工作原理 

工作原理图:

STM32--中断使用(超详细!)

工作过程:

        当外部被出发时,首先进入ICER、ISER寄存器,用于控制是否开对应的中断,打开的中断进入IPR寄存器,进行中断优先级的判断,IPR寄存器受AIRCR寄存器控制,最后按照中断优先级依次进入CPU被执行。

        内核中断由SHPR寄存器控制,SHPR与IPR寄存器属于同一级别; 

2.4 中断优先级 

 STM32中断优先级基本概念:

1、抢占优先级(pre):高抢占优先级可以打断正在执行的低抢占优先级中断;

2、响应优先级(sub):当抢占优先级相同时,响应优先级高的先执行,但是不能相互打断;

3、抢占优先级和响应优先级都相同的情况下&#x

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/146477.html

(0)
上一篇 2025-04-14 15:15
下一篇 2025-04-14 15:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信