下面我们先来了解一些基本概念:
中断:中断是什么?举个例子来说,当我们正在工作时,突然电话响了,这时你会把手里的
工作先停下来,然后去接电话,当接完电话后,电话里的人安排你马上做一件事,这时你需
要立刻去做这件事,当把这件事做完后你会继续之前被打断的工作,这个过程为一次中断
异常:一个系统本应该正常的运行,但由于某些条件使系统产生了错误,就会使系统运行
不 正常,我们称之为异常。就好比一个健康的人,如果身体某个器官出现了问题
那他将会生 病,不能像以前那样健康生活,称他的身体出现了异常
系统出现异常,我们必须对异常做 出处理,才能让系统正常运行
事件:比如一个老师在教室里给学生上课,下面的学生会做出各种不同的动作
如有认真记 笔记的,有讲小话的,有翻自己书包的等等,我们把学生的这些行为称为事件
但老师对这 些事件有些是不会有动作的,有些事件是需要老师干预的,比如两个学生讲话
影响了老师 上课,老师需要警告讲话的学生,然后再继续上课
优先级:当我们接到了两个电话,两个电话都安排你去做别的事
这时你需要先完成比较急 的事,然后再完成不是太急的事,这就是优先级的问题
当有多个中断时,我们需要根据中 断优先级判断先响应优先级高的中断,然后再响应优先级低的中断
中断与事件的联系与区别:有些事件需要响应,称这个事件为可中断事件
但有些事件不需 要做出响应称这些事件为不可中断事件。当硬件正常连接时
对应事件会自动产生,但中断 则需软件配置相应的中断使能位
抢占式优先级和响应优先级:所谓抢占式优先级和响应优先级,具有高抢占式优先级的中断
可以在低抢占式优先级中断处理过程中被响应,即中断嵌套。当两个中断源的抢占式优先级 相同时
这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断
这个 后到来的中断就要等到前一个中断处理完之后 才能被处理。如果这两个中断同时到达
则 中断控制器根据他们的响应优先级高低来决定先处理哪一个;
如果他们的抢占式优先级和响 应优先级都相等,则根据他们在中断表中的排位
顺序决定先处理哪一个。每一个中断源都必 须定义 2 个优先级
STM32 的中断管理利用了 NVIC(Nested Vectored Interrupt Controller)嵌套向量中断控制 器
它把所有的外设中断和系统异常用一张向量表来管理,每个系统异常和外设中断都被分 配相应的地址
除了一些系统异常的优先级不能改变外,其余的系统异常和中断的优先级都 可变化。具体向量表部分截图如下图所示:


其中包含 10 个系统异常,有 82 个外部中断地址,其中有 11 个被保留,没有使用
从上表 可查出对应的默认优先级和地址分配情况
NVIC 是嵌套向量中断控制器,它控制芯片所有中断功能
是 Cortex-Mx 内核里的一个外设下 图为 Cortex-M4 内核 NVIC 寄存器的分布图:

从上图可以看出,Cortex-M4 内核 NVIC 嵌套向量中断控制器总的有 7 个类型的寄存器
其 中有 1 个控制器类型的寄存器,8 个中断使能寄存器,8 个中断失能寄存器
8 个中断挂起 设定/清除寄存器,8 个中断有效位寄存器,60 个中断优先级寄存器
而 ST 对 CM4 内核 NVIC 控制器寄存器做了一定缩减,其寄存器分布图如下:
完整版技术文档请点击文章开头普通下载
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !