中断是指计算机运行过程中,出现某些意外情况需要主机干预时,机器能够自动停止正在运行的程序并转入处理新情况的程序,处理完毕后有返回原来被暂停的程序继续运行

STM32的中断和异常

(1)对于异常和外部中断的功能,对于STM32单片机而言,是由芯片内的Cortex-M内核提供支持,这部分功能时有ST公司在Cortex-M内核上拓展或修改而来的

(2)异常和中断概念相近,异常可以说是内核活动产生(比如执行指令出错),中断一般是指,有连接到内核的外部器件(外设)产生(比如外设产生中断,提示数据传输完成),它们的触发或者说处理机制相同,使用中并不严格区分二者

STM32异常和中断一览表

可以看到,异常都是由编号表示的,并且中断类型也很多,中断存在优先级

中断优先级

(1)中断优先级分为两种,可编程和不可编程,可编程的表示可以自己修改中断优先级,不可编程的就不能修改

(2)对于STM32中断优先级,决定着内核优先响应谁的中断请求

(3)小值优先原则,中断优先级数值越小,中断就会被优先相应

(4)中断优先级按照优先级分组配置

中断优先级分组

以F103为例,STM32上只使用M3内核支持的8bit优先级中的高4位bit,也就是STM32支持2^4个优先级

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
用于表达优先级 未使用,读回为0

在F103上,使用这4个bit,组织成5组优先级分组,每组分为1个抢占组,1个子优先级组

优先级分组 抢占优先级 子优先级 描述
NVIC_PriorityGroup_0 0 0-15 主-0bit,子-4bit
NVIC_PriorityGroup_1 0-1 0-7 主-1bit,子-3bit
NVIC_PriorityGroup_2 0-3 0-3 主-2bit,子-2bit
NVIC_PriorityGroup_3 0-7 0-1 主-3bit,子-1bit
NVIC_PriorityGroup_4 0-15 0 主-4bit,子-0bit

对于组0,抢占优先级为0,表示他没有抢占优先级,4个bit全部用来表示子优先级。对于组1,抢占优先级为0-1,用1个bit表示抢占优先级,其余3个bit表示子优先级...

(1)通过优先级分组,可以管理中断的响应顺序

(2)只有抢占优先级才由抢占中断权限,发生中断嵌套,打断就发生中断嵌套,没有能力打断,那就被挂起

假如事件A抢占优先级为0,B的抢占优先级为10,在B执行过程中,A发出中断请求,则会抢过B中断的使用权,等A执行完毕再继续执行B(ps:如果A并不能打断事件B,A就会被挂起)

(3)如果中断抢占优先级相同,不发生抢占

(4)如果多个挂起的中断具有相同的抢占优先级,则子优先级高的先行,如果子优先级相同,则IRQ(通常指外部中断请求)编号小的先行(IRQ来源例如:stm32f103xe.h)

抢占优先级>子优先级>IRQ编号

(5)可编程的优先级,通过嵌套向量中断控制器(NVIC)实现

NVIC库函数 描述
void NVIC_EnableIRQ(IRQn_Type IRQn) 使能中断
void NVIC_DisableIRQ(IRQn_Type IRQn) 失能中断
void NVIC_SetPendingIRQ(IRQn_Type IRQn) 设置中断悬起位(发起中断请求,硬件触发)
void NVIC_ClearPendingIRQ(IRQn_Type IRQn) 清除中断悬起位
uint_32t NVIC_GetPendingIRQ(IRQn_Type IRQn) 获取中断悬起编号
void NVIC_SetPriorityIRQ(IRQn_Type IRQn,uint32_t priorty) 设置中断优先级
uint_32t NVIC_GetPriorityIRQ(IRQn_Type IRQn) 获取中断优先级
void NVIC_SystemReset(void) 系统复位

STM32——中断概览(中断优先级)相关推荐

  1. STM32中断应用总结

    STM32中断应用总结 STM32中断很强大,STM32中断可以嵌套,任何外设都可以产生中断,其中中断和异常是等价的. 中断执行流程: 主程序执行过程可以产生中断去执行中断的内容(保护现场),然后在返 ...

  2. STM32——中断、EXTI、按键中断实验

    STM32中断--总结及实操 一.中断是什么? 1.1 中断的含义 1.2 中断的作用(了解即可) 1.3 中断的流程 二.中断资源 2.1 NVIC中断控制器 2.2 NVIC寄存器 三.优先级的概 ...

  3. STM32中断回调函数定时器-STM32电控学习笔记06

    STM32中断&定时器-STM32电控学习笔记06 day6:2022/9/24 [中断概述] 在 STM32 中,对信号的处理可以分为轮询方式和中断方式,轮询方式就是不断去访问一个信号的端口 ...

  4. STM32中断笔记——关于NVIC的两个问题

    STM32 中断非常强大,每个外设都可以产生中断,中断也是STM32非常重要的一个内容. NVIC:嵌套向量中断控制器,属于内核外设,管理着包括内核和片上所有外设的中断相关的功能. ARM corte ...

  5. 【嵌入式基础】STM32中断及DMA通信原理编程

    本文主要学习stm32中断.DMA通信原理和编程方法.使用stm32tubemx和HAL库分别完成中断模式编程和串口通信中断实验. 目录 一.STM32中断,DMA通信原理编程 1.STM32中断 ( ...

  6. STM32中断与DMA通信编程

    文章目录 一.中断与DMA通信原理 1.中断 2.DMA通信原理 二.中断控制LED灯点亮熄灭 1.新建工程 2.配置外部中断 3.配置中断优先级 4.完成创建 5.编写中断函数 6.程序烧录 7.运 ...

  7. STM32中断相关概念阐述

    STM32中断相关概念阐述 未完待续... 想完整的写完并写清楚不容易,修修改改ing... 注:本文以STM32F1系列为例,F1系列为Cortex M3内核. 目录 STM32中断相关概念阐述 1 ...

  8. 第四篇,STM32中断控制编程

    1.中断概念 中断指的是在计算机工作期间,出现了需要立即停止正在运行的程序,转而去处理意外发生的情形.发生中断之后,CPU会去执行事先写好的处理中断的代码,处理完成后回到被打断的位置继续执行. 编写中 ...

  9. HAL库设置STM32中断

    本次博客知识来自于韦东山老师的7天物联网课程. 一.中断的含义 通常,把CPU内部产生的紧急事件叫做异常,比如非法指令(除零).地址访问越界等:把来自CPU外部的片上外设产生的紧急事件叫做中断,比如G ...

最新文章

  1. TortoiseGit配置密钥的方法
  2. 大年初一微信闪退?看看如何修复的
  3. 使脚本和CSS在IE8中兼容
  4. php文本教学,php中文本操作的类
  5. Android开发之APP打开小程序后小程序无法返回APP,无法打开APP,launchApp无法返回app的原因
  6. php 获取图片字节,php内置函数获取图片类型-exif_imagetype
  7. 使用Byteman和JUnit进行故障注入
  8. 怪物猎人服务器维护时间,怪物猎人云服务器
  9. python工资一般多少西安-西安Python的就业方向有哪些?
  10. 快速突破面试算法之双指针篇
  11. 从视频中提取为ppt或图片
  12. 2018年湘潭大学程序设计竞赛 E 吃货
  13. php序列化 与json_PHP中serializen()与json_encode()的性能差异
  14. 机器学习数学篇—基础数学知识清单
  15. Vue 项目使用 又拍云 云存储服务
  16. 含有非期望产出的ZSG-DEA模型
  17. 逐步推进的团队项目准备工作全记录
  18. 漫游费概念模糊,运营商自食其果
  19. ios-跳转到苹果自带地图进行导航
  20. python 信用卡系统+购物商城见解

热门文章

  1. php开发人工智能,php可以开发人工智能吗
  2. 1. 目标精通--用java写设计模式:单一职责原则
  3. 计算机竞赛进省队可以保送吗,厉害!物理竞赛8名学子入选省队!信息学竞赛5人获清北保送资格,他们来自……...
  4. Web网站模板-小清新企业个人营销宣传响应式网站模板(HTML+CSS+JavaScript)
  5. 朗润国际期货:02月03日周五《新闻联播》主要内容
  6. IOS 滑动tableview,导航栏渐渐显示,搜索框显示在导航栏上
  7. mysql group by 和 having 使用注意事项
  8. A2-02-24.DML- Inserting Data into A Table Using MySQL INSERT Statement
  9. ^(?:([^,]*),?){1} 的含义
  10. keil错误和解决办法(1):FCARM - Output Name not specified, please check ‘Options for Target - Utilities‘