大家好,欢迎来到IT知识分享网。
写在前面:前面的学习中,我们接触了STM32的第一个外设GPIO,这也是最常用的一个外设;而除了GPIO外,中断也是一个十分重要且常用的外设;只有掌握了中断,再处理程序时才能掌握好解决实际问题的逻辑思路。此节我们学习STM32的中断;
在前面51的学习中,我们也介绍过中断的内容,但是相对于32来说,52的中断十分简单,只有5个中断源,中断的优先级,响应函数也是比较简单的,感兴趣的读者可以看一下下面的这篇博客。
CSDNhttps://mp.csdn.net/mp_blog/creation/editor/
目录
一、什么是中断
中断:打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行;
举例:当你正在写作业时,做到一半又去吃饭,吃完饭后又回来接着原来的作业继续完成。
对于单片机来说,中断是指CPU正在处理某个事件A,发生了另一件事件B,请求CPU迅速去处理(中断发生);CPU暂时停止当前的工作(中断响应),转去处理事件B(中断服务);待CPU处理事件B完成后,再回到原来的事件A(断点)继续执行,这一过程称之为中断。
中断的作用和意义:
1.实时控制:在确定的时间内对相应事件做出相应;例如:温度控制;
2.故障处理:检测到故障,需要第一时间进行处理;
3.数据传输:不确定数据何时会来,利用中断进行控制;
中断的作用:高效处理紧急程序,并且不会占用CPU资源。
STM32 GPIO外部中断简图:
下面将分别对上述过程中的各个部分进行详细的描述;
二、 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位),用于存放终端服务函数的首地址,系统已经将中断服务函数定义好了,放在中断向量表中,我们只需要进行调用即可。例如下面的中断向量表:
具体可参考:STM32F103的中文参考手册(9.1.2中断和异常向量)
在程序中的定义为:
中断向量表定义在启动文件中,发生中断时,CPU会自动执行对应的额中断服务函数;
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工作原理
工作原理图:
工作过程:
当外部被出发时,首先进入ICER、ISER寄存器,用于控制是否开对应的中断,打开的中断进入IPR寄存器,进行中断优先级的判断,IPR寄存器受AIRCR寄存器控制,最后按照中断优先级依次进入CPU被执行。
内核中断由SHPR寄存器控制,SHPR与IPR寄存器属于同一级别;
2.4 中断优先级
STM32中断优先级基本概念:
1、抢占优先级(pre):高抢占优先级可以打断正在执行的低抢占优先级中断;
2、响应优先级(sub):当抢占优先级相同时,响应优先级高的先执行,但是不能相互打断;
3、抢占优先级和响应优先级都相同的情况下&#x
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/146477.html