-
用优先权编码器扩展PIC的外部中断源
2021-01-14 17:58:11当PIC16F 877单片机外部有多个中断源中断请求时,74LS148优先权编码器首先对这些中断源进行优先级排序,把优先级别高的中断送入单片机中断入口,让单片机响应中断级别高的中断请求,处理完这一中断后返回,等待下一轮中断... -
STM32的中断处理
2020-08-02 18:25:37STM32最多有32个中断源,大体上可分为两类,外部中断源与内部中断源(引起ARM芯片执行指令/内部功能模块),其中断优先级别可分为FIQ(快速中断请求)、向量IRQ、非向量IRQ,其级别依次递减. Cortex内核具有强大的异常...1.STM32的中断和异常
STM32最多有32个中断源,大体上可分为两类,外部中断源与内部中断源(引起ARM芯片执行指令/内部功能模块),其中断优先级别可分为FIQ(快速中断请求)、向量IRQ、非向量IRQ,其级别依次递减.
Cortex内核具有强大的异常响应系统,它把能够打断当前代码执行流程的事件分为异常和中断,并将其用一个表管理,编号为0-15的称为内核异常,而16以上的则称为外部中断,这个表即为中断向量表。
中断向量表
上述表可以从启动文件startup_stm32f10x_hd.s中查找,在启动文件中,已经有相应芯片可用的全部中断向量,而且在编写中断服务函数时,需要从启动文件中定义的中断向量表查找中断服务函数名。2.NVIC中断控制器
因STM32有很多的中断,故配置起来并不容易,因此便需要一个强大而方便的中断控制器NVIC(Nested Veectored Interrupt Controller ),且其属于Cortex内核的器件。
嵌套向量中断控制器NVIC相关的中断管理工作主要有开放中断、关闭中断设置中断请求标志、读中断请求标志、清除中断请求标志和配置中断优先级等。对于中断的配置,最重要即为配置其优先级,但STM32的同一个中断向量需要设置两个优先级,抢占优先级和响应优先级
抢占优先级和响应优先级
STM32的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,其属性编号越小表明其优先级别越高。
抢占,是指打断其它中断的属性,即因为具有这个属性会出现嵌套中断(在执行中断服务函数A的过程中被中断B打断,执行完中断服务函数B再继续执行中断服务A)。
响应属性则应用在抢占属性相同的情况下,当两个中断向量的抢占优先级相同时,如果两个中断同时达到,则先处理响应优先级高的中断。
例如,现有三个中断向量
如内核正在执行C的中断服务函数,则它能被抢占优先级更高的中断A打断,由于B和C的抢占优先级相同,所以C不能被B打断。但如果B和C中断时同时到达的,内核就会首先响应 优先级别更高的B中断。
NVIC的优先级组
在配置优先级的时候,还要注意中断种类的数量。NVIC只可以配置16种中断向量的优先级,即为,抢占优先级和响应优先级的数量由一个4位的数字来决定,把这个4位数字的位数分配成抢占优先级部分和响应优先级部分,由5组分配方式。
注意:一个工程文件中NVIC的优先级组只需设置一次即可。
NVIC的优先级分组,只是为以后的中断程序设置了一个规则,例如,设置第1组,则表示,抢占优先级只能是0级或1级,响应优先级为0~7级。即,配置中断的优先级时,只能在这个范围中取值。 -
单片机基础及应用项目四课后习题及答案.docx
2020-01-31 14:32:28填空题 消除键盘抖动常用两种方法一是采用硬件去抖电路用基本RS触发器构成二是采用软件去抖程序 51系列单片机有5个中断源2级中断优先级别 中断源的是否允许中断是由IE寄存器决定的中断源的优先级别是由IP寄存器决定... -
STM32中断系统和外部中断基础学习笔记
2021-02-18 22:01:54ARM CortexM3内核支持256个中断,包括16个内核中断和240个外设中断,拥有256个中断优先级别。 STM32的中断通道可能会由多个中断源共用。这就意味着,某一个中断服务函数也可能被多个中断源所共用。所以,在中断服务...一、STM32的中断系统
理解中断、中断源、中断向量、中断优先级、中断服务函数…等基础概念。
ARM Cortex M3内核支持256个中断,包括16个内核中断和240个外设中断,拥有256个中断优先级别。
STM32的中断通道可能会由多个中断源共用。这就意味着,某一个中断服务函数也可能被多个中断源所共用。所以,在中断服务函数的入口处,需要有一个判断机制,用以辨别是那个中断触发了中断。
STM32微处理器的内核中有一个NVIC(嵌套向量中断控制器)的设备,它对中断进行统一的协调和控制,其中最主要的工作就是控制中断通道的使能和确定中断的优先级。
STM32中有2个优先级的概念:抢占优先级和响应优先级,每个中断都需要指定这两种优先级。
如果两个抢占优先级相同的中断同时到达,NVIC会根据他们的响应优先级高低来决定先处理哪一个。如果两个同时到达的中断的抢占优先级和响应优先级都相等,则根据中断的自然排位顺序来决定响应哪
个。
二、STM32的外部中断
外部中断EXTI是STM32微处理器实时处理外部事件的一种机制,由于中断请求主要来自GPIO端口的引脚,所以称为外部中断。
STM32F013微处理器有19个能产生事件/中断请求的边沿检测器,每个输入线可以独立地配置成输入类型(脉冲或挂起)和对应的触发事件(上升沿、下降沿或双边沿触发),也可以独立地屏蔽。
EXTI0~EXTI15:GPIO端口引脚。
EXTI16:PVD输出,可编程电压监测。
EXTI17:RTC闹钟。
EXTI18:USB唤醒。
三、外部中断的程序设计思路
传统STM32外部中断设计步骤:
【1】将GPIO初始化为输入端口。
【2】配置相关I/O引脚与中断线的映射关系。
【3】设置该I/O引脚对应的中断触发条件。
【4】配置NVIC,并使能中断。
【5】编写中断服务函数。
基于STM32CubeMX的外部中断设计步骤:
【1】在STM32CubeMX中指定引脚,配置中断初始化参数。
选择GPIO引脚的功能,设置中断信号触发条件,使能NVIC对应的中断通道。
【2】重写该I/O引脚对应的中断回调函数。
四、外部中断初始化函数剖析
//外部中断初始化相关的操作在gpio.c文件中的MX_GPIO_Init()函数完成。 void MX_GPIO_Init(void) { /*===================== 此处省略无关代码。 ======================*/ /* EXTI interrupt init 外部中断初始化*/ HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0); //设置EXIT9~EXIT5中断的优先级 HAL_NVIC_EnableIRQ(EXTI9_5_IRQn); //使能EXIT9~EXIT5中断通道 HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0); HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); }
五、外部中断服务函数的编写
参考网址:https://www.xmf393.com/2020/02/16/2020021604/
-
定时器与中断系统理论知识
2020-12-06 09:27:43注:规定每一个中断源有一个优先级别,根据其轻重缓急排队,优先处理最紧急事件的中断请求源,即优先级别最高的中断请求。 2.中断嵌套:在处理一个中断源时,发生另一个中断级别更高事件,则优先处理中断级别高的...定时器与中断系统理论知识
一.中断系统:
1.定义(流程):中央处理机COU正在处理事件A发生紧急事件B,停止处理A去处理B,B完成后继续处理A。(请示CPU中断的请求源称为中断源)
注:规定每一个中断源有一个优先级别,根据其轻重缓急排队,优先处理最紧急事件的中断请求源,即优先级别最高的中断请求。
2.中断嵌套:在处理一个中断源时,发生另一个中断级别更高事件,则优先处理中断级别高的事件,完成后再处理中断级别低的事件。(称为多级中断系统,无中断嵌套的称为单级中断系统)
注:89C51/52的中断系统有5个中断源,2个优先级,可实现二级中断嵌套。
3.
a.(P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。
b.(P3.3)可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。
c.TF0(TCON.5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。
d.TF1(TCON.7),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。
e.RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。二.定时器:
1.定时器在电源内部,属于内部设备;
2.作用:可用于计时系统(实现软件计时);
替代较长时间的delay,提高CPU运行效率;
3.工作:根据输出信号,每隔一段时间,计数单元数值增加一,当计数单元数值增加到设定的时间时,计数单元向中断系统发出中断申请,程序跳转到中断函数。
(1部分提供时钟,2部分计数系统,3部分为中断系统)
三.定时器和中断系统工作流程:
四.寄存器(相当于一个操作按钮):
单片机通过配置寄存器来控制内部线路的连接,通过内部线路的不同连接方式来使不同电路完成不同功能。
详细内容:http://www.stcmcudata.com/datasheet/stc/STC-AD-PDF/STC89C51RC-RD.pdf -
STM32中断优先级的理解与使用(小白入门加深学习)
2016-11-15 16:54:05关于中断源的中断优先级关系,可以归纳为下面两条基本原则: (1)低优先可被高优先级中断,高优先级不能被低优先级中断。 (2)任何一种中断(不管是高级还是低级)一旦得到响应,不会再被它同等级的中断源所中断 ...一、中断的分类:
全局中断就是在运行程序的任何一部分都可以立即执行中断服务,如果是在程序的中断才添加开放中断指令就是说有条件满足中断的时候,也只能在执行允许中断的指令后才执行中断服务。
外部中断是可以屏蔽的中断,也就是说,利用中断控制器可以屏蔽这些外部设备 的中断请求。
内部中断是指因硬件出错(如突然掉电、奇偶校验错等)或运算出错(除数为零、运算 溢出、单步中断等)所引起的中断。STM32F10的每个IO口都可以设为外部中断,最多可设19个,16+3=19
在设计硬件的时候要注意,不要将外部中断连接到PA[1]、PB1]、PC[1]等,这样的话处理器只能选择一个作为中断源。
另外:
EXTI线16连接到PVD输出
EXTI线17连接到RTC闹钟事件
EXTI线18连接到USB唤醒事件
EXTI线19连接到以太网唤醒事件
二、中断优先级
关于中断源的中断优先级关系,可以归纳为下面两条基本原则:
(1)低优先可被高优先级中断,高优先级不能被低优先级中断。
(2)任何一种中断(不管是高级还是低级)一旦得到响应,不会再被它同等级的中断源所中断
STM32中把中断是按组别来配置优先级的,每个中断优先级组别包括有: 抢断式优先级、响应式优先级。其中前者是对抢占优先级的级别划分,后者是相同抢占优先级的优先级别的划分。
比如: 中断A抢占优先级比B高,那么A的中断可以在B里面触发,忽略响应优先级; A和B抢占优先级相同,则A、B的响应优先级决定谁先响应;
我们先来看ST公司的一张图:
按照NVIC_PriorityGroup_0这么分,就分为了1个抢占(优先)级,每个抢占(优先)级下只有16个副优先级:0-15;
按照NVIC_PriorityGroup_1这么分,就分为了2个抢占(优先)级,每个抢占(优先)级下只有8个副优先级:0-7;
按照NVIC_PriorityGroup_2这么分,就分为了4个抢占(优先)级,每个抢占(优先)级下只有4个副优先级:0-3;
按照NVIC_PriorityGroup_3这么分,就分为了8个抢占(优先)级,每个抢占(优先)级下只有2个副优先级:0-1;
按照NVIC_PriorityGroup_4这么分,就分为了16个抢占(优先)级,每个抢占(优先)级下只有1个副优先级:0;
结合相关程序来学习一下
/* Enable the USART1 Interrupt */配置串口中断的驱动部分
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//抢断式优先级为0,
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; 同抢断式优先级下的响应式优先级不能互相打断
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
- /* SPI1-------------------------------------------------------------------- */
- NVIC_InitStructure.NVIC_IRQChannel = SPI1_IRQChannel;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
在库文件misc.h当中可以看到每个中断优先级的配置
同时利用两个串口工作时,不想被互相打断的话,可以把它们的抢占式优先级设为相同,它们之间就不互相影响了,别的亦是同理。
-
计算机原理之中断简介
2020-06-21 18:23:07中断的基本概念 ...首先中断源提出中断申请,在该中断允许的情况下,CPU首先响应优先级别高的中断源提出的中断请求,等处理完高优先级中断源的中断服务程序后再响应较低优先级别的中断请求;CPU暂停现 -
C51 中断 个人笔记
2018-11-02 15:09:001.CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。 2.正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。 3.正在进行的低优先级中断服务,能被高优先级中断请求所中断。 中断响应条件 中..... -
μC/OS-Ⅱ的中断和时钟
2016-09-11 17:01:25μC/OS-Ⅱ的中断 中断:应内部或外部异步事件的请求中止当前任务,而去处理异步事件 中断服务程序:应中断请求而运行的程序 ... μC/OS-Ⅱ系统允许中断嵌套,即高优先级别的中断源的中断请求可以中断低优先 -
软考备考----中断
2020-08-12 20:13:101. 概念 计算机运行程序过程中,遇到突发事件,CPU暂停正在执行的程序转去为突发...许多中断源同时提出中断时,响应必须有先后之分,因此给每个中断源规定了一定的优先级别,先响应级别高的中断请求,再处理优先级 -
如何设置中断屏蔽字
2017-01-03 15:12:54在终端服务程序中设置合适的屏蔽字,能起到对优先级别不同的中断源的屏蔽作用。屏蔽技术是可以改变优先等级的。优先级包含响应优先级和处理优先级。响应优先级是CPU响应各中断源请求的优先次序,这种次序一般是硬件... -
嵌入式_中断名词详解、分类与过程
2020-06-19 15:29:37中断 一、定义 ...首先中断源提出中断申请,在该中断允许的情况下,CPU首先响应优先级别高的中断源提出的中断请求,等处理完高优先级中断源的中断服务程序后再响应较 低优先级别的中断请求;CPU暂停 -
HAL_STM32中断,PWM
2020-09-07 11:57:17ARM Cortex M3内核支持256个中断,包括16个内核中断和240个外设中断,拥有256个中断优先级别。 STM32的中断通道可能会由多个中断源共用。这就意味着,某一个中断服务函数也可能被多个中断源所共用。所以,在中断服务... -
Chapter6:中断系统:《单片机》笔记
2020-03-10 09:17:21Chapter6:中断系统 6.1 中断的基本概念 中断: CPU暂停正在执行的程序而...当有多个中断源时,CPU优先响应最需紧急处理(优先级别高)的中断请求。 中断的嵌套: 在中断系统中,高优先级的中断请求能中断正在进... -
51单片机系列知识6--中断系统(1)
2016-02-23 13:43:42③ 中断级:根据中断源(所发出的时时事件)的轻重缓急,规定的优先级别 ④ 中断嵌套:CPU在处理一个中断源请求时候,响应了更高一级中断的请求,待处理完后,再继续执行原来的低级中断处理程序,这样的过程称为... -
【STM32开发】STM32外部中断
2020-03-23 10:05:341、抢占优先级和响应优先级在了解中断之前,先了解一下它们之间的优先级别。STM32的中断源具有两种优先级:一种为抢占优先级;另一种为响应优先级(亚优先级),其属性编号越小,表明它的优先级别越高。抢占是指打断... -
STM32 中断优先级(Cortex-M3)
2017-10-11 11:00:28一、概述 STM32(Cortex-M3)中有两个优先级的概念——抢占优先级和响应优先级,其属性编号越小,则优先级别越高。有人把响应优先级称作“亚优先级”或“副优先级”,每个...当两个中断源的抢占式优先级相同时,这两 -
嵌入式成长轨迹44 【Zigbee项目】【CC2430基础实验】【定时器中断】
2012-09-01 18:03:00中断介绍 CPU 有18 个中断,每个中断源都有它自己的位于一系列特殊功能寄存器中的中断请求标志,中断分别组合为不同的,可以选择的优先级别。 中断屏蔽 每个中断请求可以通过设置特殊功能寄存器中特定位 IEN0,IEN1 ... -
计算机组成原理(1)第八章后半部分
2020-06-03 02:06:12优先级级别高的中断源有权中断优先级别低的中断源 3.屏蔽技术 MASK=0(未屏蔽)INTER能被置为1 2.p屏蔽字 (3))屏蔽技术可以改变处理优先登记 响应优先级 不可改变 处理优先级 新的屏蔽字的设置 保护现场 -
STM32的优先级NVIC_PriorityGroupConfig的理解及其使用
2019-06-26 15:01:19我们先来看ST公司的一张图: 我自己依据此图理解,应用思维导图画了一张方便理解:(如果看不清可通过ctrl+鼠标滑轮 放大看; 前提条件1:没有组别优先顺序(只能设置为...(即”同一抢占优先级下的中断源间,... -
嵌入式c语言——学习笔记7
2021-02-18 12:58:41·ARM Cortex M3内核支持256个中断,包括16个内核中断和240个外设中断,拥有256个中断优先级别。 ·STM32的中断通道可能会由多个中断源共用。这就意味着,某一个中断服务函数也可能被多个中断源所共用。所以,在... -
stm32第四次学习
2021-03-05 15:46:58中断、中断源、中断向量、中断优先级、中断服务函数....ARM Cortex M3内核支持256个中断,包括16个内核中断和240个外设中断,拥有256个中断优先级别。 STM32的中断通道可能会由多个中断源共用。这就意味着,某一个... -
单片机f-习题6答案.docx
2020-11-18 02:05:29Word Word文档 习题6 1?什么是中断系统中断系统的功能是什么 为了满足单答中断系统是指...什么是中断嵌套 答当CPU响应某一外设的中断请求正在进行中断处理时若有优先权级别更高的 中断源提出中断请求则 CPU能中断正在 -
单片机f习题6答案.doc
2020-05-22 20:45:57PAGE 1 PAGE 4 习题6 1. 什么是中断系统中断系统的功能是什么 答中断系统是指实现中断过程的硬件... 什么是中断嵌套 答当CPU响应某一外设的中断请求正在进行中断处理时若有优先权级别更高的中断源提出中断请求则CPU能 -
单片机应用技术考试试题
2009-12-12 14:01:49同一级别中断源的优先顺序是由( )决定的。 7、LED数码显示按显示过程分为( )显示和( )显示2种。前者,对每位显示来说是连续显示的,可通过单片机串行口实现;当多位显示时需较多外部驱动芯片,功耗较大。后者... -
微机原理与接口技术试题及答案
2009-06-20 21:23:27(3)无优先级别 (4)随应用而定 19.串行异步通信传输的主要特点是( 2 ). (1)通信双方不必同步 (2)每个字符的发送是独立的 (3)字符之间的传送时间长度应相同 (4)字符发送速率由波特率决定 20. 8位D/A转换器的分辨率能给... -
TMS320C54X DSP结构、原理及应用(第二版)
2008-12-05 01:01:181.12.2 外部总线操作的优先级别114 1.12.3 等待状态发生器115 1.12.4 分区切换逻辑117 1.12.5 外部总线接口定时图118 1.12.6 复位和IDLE3省电工作方式120 1.13 TMS320C54x引脚信号说明122 第2章 指令... -
课程设计简易计算器设计
2011-11-20 11:19:14AT89C51具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。 •时钟电路: AT89C51内置最高频率达12MHz的时钟电路,用于产生整个单片机运行... -
c语言编写单片机技巧
2009-04-19 12:15:17答:有关这方面的教材,大学里常用的一本是《IBM-PC汇编语言程序设计》清华大学出版社出版的,在网上以及书店都是可以找到的,另外网上还可以搜索到很多其他的教材如:《微机原理及汇编语言教程》(杨延双 ... -
TCPIP详解--共三卷
2015-11-30 17:17:218.5.2 严格的源站选路的traceroute 程序示例 79 8.5.3 宽松的源站选路traceroute程序 的往返路由 80 8.6 小结 81 第9章 IP选路 83 9.1 引言 83 9.2 选路的原理 84 9.2.1 简单路由表 84 9.2.2 初始化路由表 86 9.2.3 ...