STM32——中断概览(中断优先级)
中断是指计算机运行过程中,出现某些意外情况需要主机干预时,机器能够自动停止正在运行的程序并转入处理新情况的程序,处理完毕后有返回原来被暂停的程序继续运行
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——中断概览(中断优先级)相关推荐
- STM32中断应用总结
STM32中断应用总结 STM32中断很强大,STM32中断可以嵌套,任何外设都可以产生中断,其中中断和异常是等价的. 中断执行流程: 主程序执行过程可以产生中断去执行中断的内容(保护现场),然后在返 ...
- STM32——中断、EXTI、按键中断实验
STM32中断--总结及实操 一.中断是什么? 1.1 中断的含义 1.2 中断的作用(了解即可) 1.3 中断的流程 二.中断资源 2.1 NVIC中断控制器 2.2 NVIC寄存器 三.优先级的概 ...
- STM32中断回调函数定时器-STM32电控学习笔记06
STM32中断&定时器-STM32电控学习笔记06 day6:2022/9/24 [中断概述] 在 STM32 中,对信号的处理可以分为轮询方式和中断方式,轮询方式就是不断去访问一个信号的端口 ...
- STM32中断笔记——关于NVIC的两个问题
STM32 中断非常强大,每个外设都可以产生中断,中断也是STM32非常重要的一个内容. NVIC:嵌套向量中断控制器,属于内核外设,管理着包括内核和片上所有外设的中断相关的功能. ARM corte ...
- 【嵌入式基础】STM32中断及DMA通信原理编程
本文主要学习stm32中断.DMA通信原理和编程方法.使用stm32tubemx和HAL库分别完成中断模式编程和串口通信中断实验. 目录 一.STM32中断,DMA通信原理编程 1.STM32中断 ( ...
- STM32中断与DMA通信编程
文章目录 一.中断与DMA通信原理 1.中断 2.DMA通信原理 二.中断控制LED灯点亮熄灭 1.新建工程 2.配置外部中断 3.配置中断优先级 4.完成创建 5.编写中断函数 6.程序烧录 7.运 ...
- STM32中断相关概念阐述
STM32中断相关概念阐述 未完待续... 想完整的写完并写清楚不容易,修修改改ing... 注:本文以STM32F1系列为例,F1系列为Cortex M3内核. 目录 STM32中断相关概念阐述 1 ...
- 第四篇,STM32中断控制编程
1.中断概念 中断指的是在计算机工作期间,出现了需要立即停止正在运行的程序,转而去处理意外发生的情形.发生中断之后,CPU会去执行事先写好的处理中断的代码,处理完成后回到被打断的位置继续执行. 编写中 ...
- HAL库设置STM32中断
本次博客知识来自于韦东山老师的7天物联网课程. 一.中断的含义 通常,把CPU内部产生的紧急事件叫做异常,比如非法指令(除零).地址访问越界等:把来自CPU外部的片上外设产生的紧急事件叫做中断,比如G ...
最新文章
- TortoiseGit配置密钥的方法
- 大年初一微信闪退?看看如何修复的
- 使脚本和CSS在IE8中兼容
- php文本教学,php中文本操作的类
- Android开发之APP打开小程序后小程序无法返回APP,无法打开APP,launchApp无法返回app的原因
- php 获取图片字节,php内置函数获取图片类型-exif_imagetype
- 使用Byteman和JUnit进行故障注入
- 怪物猎人服务器维护时间,怪物猎人云服务器
- python工资一般多少西安-西安Python的就业方向有哪些?
- 快速突破面试算法之双指针篇
- 从视频中提取为ppt或图片
- 2018年湘潭大学程序设计竞赛 E	吃货
- php序列化 与json_PHP中serializen()与json_encode()的性能差异
- 机器学习数学篇—基础数学知识清单
- Vue 项目使用 又拍云 云存储服务
- 含有非期望产出的ZSG-DEA模型
- 逐步推进的团队项目准备工作全记录
- 漫游费概念模糊,运营商自食其果
- ios-跳转到苹果自带地图进行导航
- python 信用卡系统+购物商城见解
热门文章
- php开发人工智能,php可以开发人工智能吗
- 1. 目标精通--用java写设计模式:单一职责原则
- 计算机竞赛进省队可以保送吗,厉害!物理竞赛8名学子入选省队!信息学竞赛5人获清北保送资格,他们来自……...
- Web网站模板-小清新企业个人营销宣传响应式网站模板(HTML+CSS+JavaScript)
- 朗润国际期货:02月03日周五《新闻联播》主要内容
- IOS 滑动tableview,导航栏渐渐显示,搜索框显示在导航栏上
- mysql group by 和 having 使用注意事项
- A2-02-24.DML- Inserting Data into A Table Using MySQL INSERT Statement
- ^(?:([^,]*),?){1} 的含义
- keil错误和解决办法(1):FCARM - Output Name not specified, please check ‘Options for Target - Utilities‘