电工之家网网_电工基础知识学习网站
以后地位:电工之家网 > 电子技术 > 正文

stm32分歧中断可以或许有分歧分组吗

光阴>2019-05-19 12:19 来源:电工之家网网

 一:综述

 
STM32 目前支撑的中断共为 84 个(16 个内核+68 个内部),可以或许或许供给16 级可编程中断优先级的设置(仅应用中断优先级设置8bit中的高4位)和16个抢占优先级(因为抢占优先级至多可以或许或许有4位)。
 
二:颖呷级判断
 
STM32(Cortex-M3)中有两个优先级的概念——抢占优先级和相应优先级,其属性编号越小,则优先级别越高。有人把相应优先级称作“亚优先级”或“副优先级”,每个中断源都必要被指定这两种优先级。
具有高抢占式优先级的中断可以或许或许在具有低抢占式优先级的中断处理过程中被相应,即中断嵌套,或许说高抢占式优先级的中断可以或许或许嵌套低抢占式优先级的中断。
当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套相干,当一个中断到来后,如果正在处理另外一个中断,这个后到来的中断就要等到前一个中断处理完之后能力被处理。如果这两个中断同时到达,则中断节制器根据他咱咱们的相应优先级高低来决定先处理哪一个;如果他咱咱们的抢占式优先级和相应优先级都相等,则根据他咱咱们在中断表中的排位顺序决定先处理哪一个。
三:颖呷级分组
既然每个中断源都必要被指定这两种优先级,就必要有相应的存放器位记载每个中断的优先级;在Cortex-M3中定义了8个比特位用于设置中断源的优先级,这8个比特位在NVIC应用中断与复位节制寄丛器(AIRCR)的中断优先级分组域中,可以或许或许有8种分派办法:
统统8位用于指定相应优先级
最高1位用于指定抢占式优先级,最低7位用于指定相应优先级
最高2位用于指定抢占式优先级,最低6位用于指定相应优先级
最高3位用于指定抢占式优先级,最低5位用于指定相应优先级
最高4位用于指定抢占式优先级,最低4位用于指定相应优先级
最高5位用于指定抢占式优先级,最低3位用于指定相应优先级
最高6位用于指定抢占式优先级,最低2位用于指定相应优先级
最高7位用于指定抢占式优先级,最低1位用于指定相应优先级
这便是优先级分组的概念。
 
 
--------------------------------------------------------------------------------
 
Cortex-M3允许具有较少中断源时应用较少的存放器位指定中断源的优先级,因此STM32把指定中断优先级的存放器位削减到4位(AIRCR高四位),这4个存放器位的分组办法如下:
第0组:                                                       统统4位用于指定相应优先级
第1组:最高1位用于指定抢占式优先级,最低3位用于指定相应优先级
第2组:最高2位用于指定抢占式优先级,最低2位用于指定相应优先级
第3组:最高3位用于指定抢占式优先级,最低1位用于指定相应优先级
第4组:统统4位用于指定抢占式优先级
可以或许或许颠末过程调用STM32的固件库中的函数NVIC_PriorityGroupConfig()抉择应用哪种优先级分组办法,这个函数的参数有下列5种:
NVIC_PriorityGroup_0 => 抉择第0组
NVIC_PriorityGroup_1 => 抉择第1组
NVIC_PriorityGroup_2 => 抉择第2组
NVIC_PriorityGroup_3 => 抉择第3组
NVIC_PriorityGroup_4 => 抉择第4组
 
中断优先级分组是为了给抢占式优先级和相应优先级在中断优先级寄丛器的高四位分派各个优先级数字所占的位数。在一个程序中只能设定一次。
 
四:中断源的优先级
接下来便是指定中断源的优先级,中断源优先级是在中断优先级存放器中设置的,只能设置及高四位,必需根据中断优先级分组中设置好的位数来在该存放器中设置相应的数值。假如你抉择中断优先级分组的第3组:最高3位用于指定抢占式优先级,最低1位用于指定相应优先级,那么抢占式优先级就有000-111共八种数据抉择,也便是有八个中断嵌套,而相应优先级中有0和1两种,总共有8*2=16种优先级。
 
中断源优先级详细的设置了该中断源的优先级别
 
在一个程序中可以或许或许设定多个(至多16个)优先级,每个中断源只能设定的一个。
 
每写一个对付中断优先级的程序必需包含下列两个函数:
 
1)void NVIC_PriorityGroupConfig(u32 NVIC_PriorityGroup)中断分组设置
 
2)void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)中断优先级设置
 
注意:NVIC能设置设备摆设的是16种中断向量,而不是16个,当工程中有超过16个中断向量时,必然有两个以上的中断向量是应用相同的中断种类,而具有相同中断种类的中断向量不能互相嵌套。
 
五:启动所需GPIOn_Pin及AFIO的RCC时钟
 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,RCC_APB2Periph_AFIO,ENABLE);
 
注意:千万别忘记启动RCC_APB2Periph_AFIO!否则管脚只能做通俗高低电平来用。当把GPIO用作EXTI内部中断或应用重映射功效的时候,必需开启AFIO时钟,而在应用默认复用功效的时候,就不必开启AFIO时钟了。
 
六:实例
 
<span style="font-size:14px;">  NVIC_InitTypeDef    NVIC_InitStructure;   //定义中断初始化范例布局体变量
  
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);   //设置设备摆设优先级分组1 2个两个抢占优先级 8个亚优先级
  NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; //开口内部中断0
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//设置设备摆设0号抢占式优先级  
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //亚优先级设置设备摆设为0号
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能通道
  NVIC_Init(&NVIC_InitStructure);     //对内部中断0停止初始化设置设备摆设
 
 
  NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; //开口内部中断5到9
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//设置设备摆设1号抢占式优先级  
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //亚优先级设置设备摆设为1号
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能通道
  NVIC_Init(&NVIC_InitStructure);     //对内部中断0停止初始化设置设备摆设
 
 
  NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQn; //ADC1中断
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//设置设备摆设1号抢占式优先级  
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //亚优先级设置设备摆设为1号
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能通道
  NVIC_Init(&NVIC_InitStructure);     //对内部中断0停止初始化设置设备摆设
</span>从上面的设置设备摆设来看,内部中断0的优先级最高,可以或许或许打断ADC和内部5到9的中断,也就说可以或许或许嵌套发生,当ADC中断和内部5到9中断同时发生时,它咱咱们的抢占优先级别相同,亚优先级别也相同,因为ADC1硬件排在更靠前,则先发生ADC中断,若是两者任何一个中断正在履行,则等此中断履行完,再去履行另外一个中断。
 
NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQn表示要设置设备摆设的为EXTI的第5~9线的中断向量,也便是说EXTI5~EXTI9线是应用同一个中断向量的。这些可写入的参数可以或许或许在stm32f10x.h文件中查找到。
看过《stm32分歧中断可以或许或许有分歧分组吗》的人还看了如下文章
泥土湿度感应器探头的原理是什么?为什么制成板状的 泥土湿度感应器探头的原理是什么?为什么制
泥土湿度传感器的探头实际上便是两个金属电极,制作成板状是为了增大与泥土的接触面积,以便与泥土能有优越的接触,如许能力更好的检测泥土的干湿度。若制作成缝纫机针那么细小的电极,无法与泥土优越接触,如许也就不能精确的检测泥土的干湿度了。下面咱咱咱们...
限流电阻会引起电压变更吗 限流电阻会引起电压变更吗
限流电阻可以或许或许限制流入负载的电流的大...
电脑开机出现故障是什么原因 电脑开机出现故障是什么原因
主板:技嘉B85M-HD3 CPU:i5 4430 内存:8G 集成显卡 故障现象:按开机键10多秒后才显示主板logo开端自检启动体系,进入体系后统统正常。 当彻底断电(拔掉电源线等十几秒)再插电开机3秒就亮屏并显示logo开端自检了。只要不彻底断电,每次开机都要十几秒才亮屏。...
模拟电路和数字电路的差别 模拟电路和数字电路的差别
模拟电路和数字电路都是令人头痛的事,也是学习电子电路过程中的两大拦路虎,难、才是挑衅的能源。科学技术睁开迅猛,电子电路自己功效赓续进级,应用领域随之拓宽,跟如今人咱咱们日常密切度也赓续拉近。以电子电路功效分类,可分模电与数电两大类,这两大类是...
用红外线信号节制马达电路原理 用红外线信号节制马达电路原理
用红外线信号来节制马达的工作与否,但其未说明马达的工作电压及红外线信号的节制距离,故这里只能介绍一个简略的红外节制电路来说明一下节制的基本原理。 直射式红外节制电路。 上图中的VD1为红外发射管,因为为近距离节制(20cm以内),这里采纳直流驱动红...
友情链接:天成资讯网  中国江苏消防网  黑龙江教育新闻网  C9C炒股票网  绿化草坪网  中国教育资源网  梅花表维修网  吉林教育新闻网  无锡教育新闻网  中国艺术网