【STM32】NVIC中断优先级管理

(1)NVIC中断优先级分组

1>,CM4内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且

具有256级的可编程中断设置。

2>,STM32F4并没有使用CM4的内核的全部东西,而只是用了它的一部分。

3>,STM32F40xx/STM32F41xx的92 个中断里面,包括10个内核中断和82个可屏蔽中

断,具有16级可编程中断优先级,而我们经常用的就是这82个可屏蔽中断。

特别说明:

一般情况下,系统代码执行过程中,只设置一次中断优先级分组,比如为分组2,设置

好分组后一般不会再改变分组。随意改变分组会导致中断管理混乱,程序出现意想不到的执

行结果。

中断优先级分组函数:

void NVCI_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);

(2)中断优先级设置

中断使能寄存器组:ISER[8]

作用:用来使能中断

32位寄存器,每个为控制一个中断的是能。STM32F40x只能有82个可屏蔽中断,所以

只使用了其中的ISER[0]~ISER[2]。ISER[0]的bit0~bit31分别对应中断0~31。ISER[1]的bit0~31

对应中断的32~63,ISER[2]的bit0~bit31对应中断的64~81。

中断失能寄存器组:ICER[8]

中断挂起控制寄存器组:ISPR[8]

中断解挂控制寄存器组:ICPR[8]

(3)NVIC总结:

<1>,系统运行后先设置中断优先级分组。调用函数:

void NVCI_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);

整个系统执行过程中,只设置一次中断分组。

<2>,针对每个中断,设置对应的抢占优先级和相应优先级

void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);

<3>,如果需要挂起/解挂,查看中断当前激活状态,分别调用相关函数即可。

时间: 2025-01-18 11:09:09

【STM32】NVIC中断优先级管理的相关文章

关于嵌入式学习随笔-&gt;6《NVIC中断优先级管理》

1.中断技术概述 在单片机应用系统中,中断技术主要用于时时检测与控制,也就是要求单片机能感及时地响应中断请求源提出的服务请求,进行快速响应并及时处理,这些工作是由单片机片内的中断系统来实现的.当中断请求源发出中断请求时,如果中断请求得到允许,单片机暂时中止当前正在执行的主程序,转到中断服务处理程序处理中断请求,处理完中断服务请求后,再回到原来被中止的程序处(断点),继续执行被中断的主程序. 中断响应和处理过程如下图所示: 2.中断源 -->M4/M7内核支持256个中断,其中包含了16个内核中断

stm32 NVIC中断管理实现[直接操作寄存器]

本文转自:http://www.ichanging.org/stm32_NVIC.html cortex-m3支持256个中端,其中包含了16个内核中断,240个外部中断.stm32只有84个中断,包括16个内核中断和68个可屏蔽中断.stm32f103上只有60个中断,f107上才有68个中断. 中断是stm32很基础的一个功能,学会使用中断,才可以更好的使用其他的外设.理解stm32的中断,必须要先从stm32的中断优先级分组是怎么回事.要理解优先级分组,就要先理解什么是先占优先级,和次占优

stm32中断优先级管理与外部中断编程

stm32中断优先级管理与外部中断编程 中断优先级管理 外部中断编程 原文地址:https://www.cnblogs.com/-wenli/p/10633445.html

STM32F4——NVIC中断优先级及外部中断

NVIC中断优先级 一.简介: CM4内核可以支持256个中断,包括16个内核中断和240个外部中断,256级的可编程中断设置.对于STM32F4没有用到CM4内核的所有东西,只是用到了一部分,对于STM32F40和41系列共有92个中断,其中有10个内核中断和82个可屏蔽中断,常用的为82个可屏蔽中断. 二.相关寄存器: ISER[8]-中断使能寄存器组,用来使能中断,每一位控制一个中断,由于上面已经说明了控制82个可屏蔽的中断,因此利用ISER[0~2]这三个32位寄存器就够了.一下的几个寄

STM32 NVIC配置详解

例程:  /* Configure one bit for preemption priority */  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);    /* Enable the WAKEUP_BUTTON_EXTI_IRQn Interrupt */  NVIC_InitStructure.NVIC_IRQChannel = WAKEUP_BUTTON_EXTI_IRQn;  NVIC_InitStructure.NVIC_IRQCha

(二)STM32中中断优先级理解

很多人在配置STM32中断时对固件库中的这个函数NVIC_PriorityGroupConfig()——配置优先级分组方式,会很不理解,尤其是看中文翻译版的,因为中文翻译版里把这里翻译成“先占优先级和从优先级”这样翻译其实是不对的,很容易让人误解.为了便于大家理解,有必要先解释两个概念: 抢占式优先级/响应优先级: STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级. 具有高抢占式优

[STM32].NVIC嵌套中断向量的理解

转自:http://www.21ic.com/embed/jiaocheng/sheji/201209/5634.html 一.STM32 (Cortex-M3) 中的优先级概念 STM32(Cortex-M3)中有两个优先级的概念:抢占式优先级和响应优先级,也把响应优先级称作“亚优先级”或“副优先级”,每个中断源都需要被指定这两种优先级. 1. 何为占先式优先级(pre-emption priority) 高占先式优先级的中断事件会打断当前的主程序/中断程序运行—抢断式优先响应,俗称中断嵌套.

STM32 NVIC

这个概念查了半天也没弄清楚,后来看正点原子资料里的一篇文章弄明白了.现将理解的加以纪录,以备忘. 首先说一下优先级分组  这个概念应该是直译的英文.这个词本身就不对.准确的说是组织形式.分组给人感觉同时有好多人,分成好多组,大家选一组..实质上分组的形式.也就是怎么分,分的方式,所以你只能选一种,这并非让我们选一个分组,而是选一个分组的方法. 以嵌入式而言,这个选的过程,肯定就是一个对寄存器赋值的过程. 首先,给出CORTEX-M3权威指南里的一个图,这个图原汁原味! 这个图的意思是如果 赋值为

STM32 NVIC 的理解

最近在研究STM32中断的嵌套的问题,终于找到一个好理解的方法,也许是我太笨,记录下来! STM32有43个channel的settable的中断源:AIRC(Application Interrupt and Reset Register)寄存器中有用于指定优先级的4 bits.这4个bits用于分配preemption优先级和sub优先级,在STM32的固件库中定义如下/* Preemption Priority Group ---------------------------------