4.3 中断

中断是指计算机运行过程中,出现某些意外情况需要计算机处理时,技能能自动暂停正在运行的程序并转入处理新情况的程序,处理完毕后又返回原先被暂停的程序继续运行的功能。

举一个生活例子来说明:小明在厨房干活,流程是烧水——洗菜——切菜——煮饭——煮汤。烧水需要10分钟,当小明加完水点火后,需要等10分钟才能烧完水。此时小明为了提高效率,不应该白白地10分钟,于是小明继续洗菜。洗菜的过程中,水开了,烧水壶发出了声音,小明停止手里正在洗菜的工作,把烧水的火关了,防止烧干,然后回来继续洗菜。

这个过程中,小明在洗菜等同于计算机正在处理当前程序。水开了等同于中断发生了;小明停止洗菜,去把火关了,等同于计算机开始处理新程序。之后小明继续回来洗菜等同于计算机返回原先被暂停的程序继续运行。

通过这个例子,我们可以知道中断有3个重要的因素:

(1)中断源。引发中断发生的原因,例如水开了就是一个中断源。

(2)中断处理函数。当中断发生时,我们必须为计算机指定该中断对应的处理函数,否则计算机不知道如何处理这个中断。例如小明把火关了这个动作就是中断处理函数。

3. 可返回。中断处理完后必须返回到原先程序。

中断是计算机系统的关键技术之一,可以有效提高计算机的效率,满足实时性的要求。

4.3.1 STM32中断向量表

STM32具有非常强大的中断系统,将中断分为两种类型:内核中断和外部中断,并将所有中断编排起来,形成一个表,我们称之为中断向量表。需要注意的是,STM32系列芯片有很多型号,每种型号的中断向量表都不一样,读者需要根据自己的芯片型号去ST官网下载对应的芯片手册查看。本书这里只列出STM32F407系列芯片的中断向量表。如图4.29所示。

其中,-3 ~ 6 被标黑的这几列属于内核中断。从7开始属于外部中断。

内核中断是不能被打断的,也不能设置优先级的,凌驾于外部中断之上。常见的内核中断有:复位(Reset)、不可屏蔽中断(NMI)、硬中断(HardFault)等

外部中断是我们学习的重点,可配置优先级。优先级分为两种:抢占优先级和响应优先级。

1. 抢占优先级

抢占优先级高的中断能打断抢占优先级低的中断,等优先级高的任务处理完后,再回来继续处理之前低优先级的中断任务。所有当存在多个抢占优先级不同的任务时,可能会出现

2. 响应优先级

响应优先级又被称为次优先级,若两个任务的抢占式优先级一样,那么响应优先级较高的任务则先执行,且在执行的同时不能被下一个响应优先级更高的任务打断。

STM32F405xx/07xx 和 STM32F415xx/17xx 具有 82 个可屏蔽中断通道,16 个可编程优先级(使用了 4 位中断优先级)。

图4.29 STM32F407中断向量表

4.3.2 中断控制器

由于STM32的中断系统比较复杂,所以内核中有一个专门管理中断的控制器:NVIC。

STM32标准库提供了一套通过NVIC来控制中断的API。我们首先来看NVIC_Init()函数,这套函数首先要定义并填充一个结构体:NVIC_InitTypeDef 该结构体的定义如下:

NVIC_IRQChannel :需要配置的中断向量。

NVIC_IRQChannelCmd :使能或者关闭相应中断向量的中断响应。

NVIC_IRQChannelPreemptionPriority :配置相应中断向量的抢占优先级。

NVIC_IRQChannelSubPriority :配置相应中断的响应优先级。

不过要注意一点的是,NVIC只可以配置16种中断向量的优先级,其抢占优先级和响应优先级都用一个4位的数字来决定。在库函数中,将其分为了5中不同的分配方式:

第0组:所有的4位都有来表示响应优先级,能够配置16种不同的响应优先级。中断优先级则都相同。

第1组:最高一位用来配置抢占优先级,剩余三位用来表示响应优先级。那么就有两种不同的抢占优先级(0和1)和8种不同的响应优先级(0~7)。

第2组:高两位用来配置抢占优先级,低位用来配置响应优先级。那么两种优先级就各有4种。

第3组:高三位用来配置抢占优先级,低位用来配置响应优先级。有8种抢占优先级和2种相应优先级。

第4组:所有位都用来配置抢占优先级,即有16种抢占优先级,没有响应属性。

这5种不同的分配方式,根据项目的实际需求来配置。

配置的API如下:

NVIC_PriorityGroupConfig();

其中括号内可以输入以下一个参数,代表不同的分配方式:

NVIC_PriorityGroup_0

NVIC_PriorityGroup_1

NVIC_PriorityGroup_2

NVIC_PriorityGroup_3

NVIC_PriorityGroup_4

带你了解STM32中断系统相关推荐

  1. STM32中断系统的基本概念

    STM32中断系统 基本概念 一.日常生活中的中断 *图片来源网络 二.处理器中的中断 在处理器中,中断是一个过程,CPU在正常运行的过程中,遇到内部/外部的紧急事情需要处理,那么这个时候先终止当前程 ...

  2. stm32中断优先级_STM的中断系统

    STM32的中断系统 STM32具有十分强大的中断系统,将中断分为了两个类型:内核异常和外部中断.并将所有中断通过一个表编排起来,下面是stm32中断向量表的部分内容: 上图-3到6这个区域被标黑了, ...

  3. ARM(IMX6U)ARM Cortex-A7中断系统(GPIO按键中断驱动蜂鸣器)

    参考:Linux之ARM Cortex-A7 中断系统详解 作者:一只青木呀 发布时间: 2020-09-16 16:07:22 网址:https://blog.csdn.net/weixin_453 ...

  4. 第十一章 STM32中断应用

    目录 11.1 中断概述 11.1.1 中断的基本概念和原理 11.1.2 STM32中断系统结构和工作原理 11.1.3 中断向量表及存储位置 11.2 中断控制器 11.2.1 NVIC的功能和特 ...

  5. 深入浅出地理解STM32中的中断系统——从原理到简单工程示例——保姆级教程

    深入浅出地理解STM32中的中断系统 一.什么是中断?什么是异常? 二.如何管理中断? 三.NVIC 1 NVIC 特点 2 中断优先级 (1) 优先级分组 3 中断向量表 4 中断服务函数 (1)中 ...

  6. STM32学习笔记(三)丨中断系统丨EXTI外部中断(对射式红外传感器计次、旋转编码器计次)

    本篇文章包含的内容 一.中断系统 1.1 中断的定义 1.2 中断优先级 1.3 中断的嵌套 1.4 STM32中的中断系统 1.4.1 STM32的中断资源 1.4.2 嵌套中断向量控制器 NVIC ...

  7. STM32笔记 (七)中断系统与NVIC嵌套向量中断控制器

    简介 STM32拥有一个强大的中断系统,几乎所有外设都能产生中断,对于F103系列的单片机,ARM公司在Cortex‐M3 的内核水平上搭载了一个异常响应系统(异常就是中断), 支持为数众多的系统异常 ...

  8. 物联网之STM32开发四(中断系统)

    STM32-中断系统 内容概要: STM32中断系统概述 外部中断控制器EXTI 按键中断实例 串口中断实例 STM32中断系统概述: 内容概要: 中断的基本概念 嵌套向量控制器NVIC 中断及异常向 ...

  9. stm32学习笔记-中断系统

    文章目录 问题引入 1.中断系统概述. 1.1 为什么要中断(中断意义) 中断和轮询比较: 1.2 中断处理过程 1.3 中断笔试题 1.4 中断服务函数 2.STM32中断的体系结构. 2.1 结构 ...

最新文章

  1. layui upload 额外参数上传
  2. 骨骼捏脸功能的实现方法
  3. 撬锁锤怎么用_安全锤是啥?消防蜀黍教你怎么选?如何快速破拆逃生?
  4. 初探Golang(3)-数据类型
  5. 给考研迷茫中的你的一封信
  6. ni max不能连续采集图像_1.6视觉检测项目过程分解——程序的连续运行
  7. 双创计算机应用基础答案,“双创”背景下基于《计算机应用基础》课程网络学习空间的教学实践与研究(原稿)...
  8. 6 种 Python 数据可视化工具
  9. STM32:sht20温湿度检测程序,并在OLED屏上显示
  10. java整理快捷鍵_常用Eclipse快捷键整理,提高效率
  11. git clone 失败问题解决方案
  12. Zabbix Server trapper两个命令注入漏洞(CVE-2017-2824和CVE-2020-11800)
  13. mac 重命名文件快捷键
  14. 深入浅出—Redux-saga源码
  15. IOS10系统终于可以降级IOS9了,赶紧围观
  16. 前端常见问题和技术解决方案
  17. 飞猪、去哪儿网被列入大数据“杀熟”名单,超50%的人遭遇过被“杀熟”
  18. 网络层核心协议:IP协议
  19. 使用 PTC Mathcad Prime 软件绘制电源谐振Q值曲线
  20. vs2013 无法创建项目 终极解决方案

热门文章

  1. 在此计算机上未找到静态IP地址,系统检测到您的联网方式为静态IP,ubuntu手动设置ip地址...
  2. find命令报错: paths must precede expression(转)
  3. linux启动xfce桌面,Xfce桌面环境美化完整教程
  4. WPF DataGrid 单元格实现下拉框选项
  5. 复联4来袭 作为漫威迷的你是否经得住考验?
  6. 3D数学 自定义三维向量类进行运算
  7. 一文搞定GPS接收机定位
  8. 【java技术面试第四讲】Java面试题04.java中int占几个字节
  9. js操作 ifarm contentWindow属性
  10. 人脸识别 (5) 基于MCTNN人脸检测(Pytorch)