STM32的优先级NVIC_PriorityGroupConfig

关于STM32的中断优先级

1.STM32中每一个中断都有一个专门的寄存器,(Interrupt Priority Register),来描述该中断的占先式优先级和副优先级,在这个寄存器中STM32使用4个二进制位描述优先级

2.占先式优先级和副优先级的分配

优先级组别 占先式优先级 副优先级
4 4位/16级 0位/1级
3 3位/8级 1位/2级
2 2位/4级 2位/4级
1 1位/2级 3位/8级
0 0位/1级 4位/16级

中断组别0-4,即表示了中断占先式优先级的位数,中断组别为n,占先式有n位,副优先级(4-n)位,有2^n个优先级(从0开始),在每个优先级下面,有(2^(4-n))个副优先级。

前提条件1:组别优先顺序(第0组优先级最强,第4组优先级最弱):NVIC_PriorityGroup_0>NVIC_PriorityGroup_1>NVIC_PriorityGroup_2>NVIC_PriorityGroup_3>NVIC_PriorityGroup_4
前提条件2:“组”优先级别>“抢”占优先级别>“副”优先级别
前提条件3:同一组优先级别中,不同的抢占级别之间,其中一抢占级别正在做事,另外抢占级别不能打断他;(即”同一组优先级下的中断源间,没有中断嵌套“)
前提条件4:不同组优先级别间,依据优先级强弱,优先级别高的组的中断源可以打断优先级别低的组的正在做的事情;(即:不同组优先级间,可以中断嵌套)

时间: 2024-10-13 23:47:04

STM32的优先级NVIC_PriorityGroupConfig的相关文章

STM32的优先级NVIC_PriorityGroupConfig的理解及其使用

我自己依据此图理解,应用思维导图画了一张方便理解:(如果看不清可通过ctrl+鼠标滑轮    放大看:) 前提条件1:组别优先顺序(第0组优先级最强,第4组优先级最弱):NVIC_PriorityGroup_0>NVIC_PriorityGroup_1>NVIC_PriorityGroup_2>NVIC_PriorityGroup_3>NVIC_PriorityGroup_4前提条件2:“组”优先级别>“抢”占优先级别>“副”优先级别前提条件3:同一组优先级别中,不同的

STM32 抢占优先级和响应优先级

一.抢占优先级和响应优先级 STM32 的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,其属性编号 越小,表明它的优先级别越高. 抢占,是指打断其他中断的属性,即因为具有这个属性会出现嵌套中断(在执行中断 服务函数A 的过程中被中断B 打断,执行完中断服务函数B 再继续执行中断服务函数 A),抢占属性由NVIC_IRQChannelPreemptionPriority 的参数配置. 而响应属性则应用在抢占属性相同的情况下,当两个中断向量的抢占优先级相同时, 如果两个中断同时到达, 则先

STM32F104VG (一)中断与外部中断

一.基础知识 1.ARM的中断优先级分硬件优先级和软件优先级两种 其中软件优先级又由抢占优先级和响应优先级组成 2.中断的优先级采用编号小优先的原则. 3.一般情况: 1).如果设定了软件优先级,先看软件优先级: 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断. 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之

[FreeRTOS入门] 1.CubeMX中FreeRTOS配置参数及理解

1.有关优先级 1.1 Configuration --> FreeRTOS MAX_PRIORITIES 设置任务优先级的数量:配置应用程序有效的优先级数目.任何数量的任务都可以共享一个优先级,使用协程可以单独的给与它们优先权.见MAX_CO_ROUTINE_PRIORITIES. 在RTOS内核中,每个有效优先级都会消耗一定量的RAM,因此这个值不要超过你的应用实际需要的优先级数目. 每一个任务都会被分配一个优先级,优先级值从0~ (MAX_PRIORITIES - 1)之间.低优先级数表示

STM32 之 NVIC(中断向量、优先级) 简述

一.背景 需要使用STM32的CAN进行通信,经过一系列配置后,已可正常收发,还剩下一个CAN通信的错误处理.可错 误中断使能寄存器已经配置使能了,出错后就是无法进入"CAN1_SCE_IRQHandler"中断.(让CAN通信出错的的 办法很简单,将"CAN_H"与"CAN_L"直接短接,然后让其发送数据,正常情况下,就会触发错误中断了,发送错 误寄存器会瞬间加至"128",如果继续发,每发一次,发送错误计数器会+8,直到2

STM32中的抢占优先级、响应优先级概念

STM32(Cortex-M3)中有两个优先级的概念--抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级. 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套在低抢占式优先级的中断中. 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理.如果这两个中断同时到达,则中

stm32 优先级说明

抢占优先级和响应优先级,其实是一个中断所包含的两个优先级,其中前者是对抢占优先级的级别划分,后者是相同抢占优先级的优先级别的划分. 比如: 中断A抢占优先级比B高,那么A的中断可以在B里面触发,忽略响应优先级: A和B抢占优先级相同,则A.B的响应优先级决定谁先响应: 总之 , 抢占优先级厉害 具体我们可以参考官方提供的table 00080 The table below gives the allowed values of the pre-emption priority and subp

stm32中断 抢占优先级 和 响应优先级 有什么区别

与51不同,stm32的中断分类更灵活.51只是按先后顺序大小排列互相打断. stm32中多了响应优先级这一概念. stm32的中断分为 1.抢占(占先)优先级. 2.响应优先级. 1.抢占优先级.抢占优先级高的中断,可以打断抢占优先级低的中断. 2.响应优先级.抢占优先级相同的中断,响应优先级高的可以优先执行. 也许会有疑问:抢占优先级相同的中断,响应优先级高的不可以打断响应优先级低的中断.两个中断肯定是谁先来了就相应谁,两个中断不可能同时来.响应优先级又有何用呢. 其实,响应优先级主要给出了

STM32学习及应用笔记二:一次运算符优先级造成的错误

本人在最近一个项目的开发中,出现一个应为疏忽运算符优先级造成的问题,检查了很久才发现问题,所以觉得运算符的优先级问题还是有必要再研究一下.具体的问题是这样的,我采集了传感器的原始数据,然后会对数据进行一些处理,在其中的一种条件下会对一个数进行左移几位并加上一个数.类似的操作在其他地方也有,但只在这个地方忘记了一个括号,所以得出了结果总是存在偏差,只好从头开始查找,花了不少时间才发现这出错误. 其实本人平时还是非常注意代码规范的,但也有一时疏忽的,确实运算符的优先级有时候让人迷惑.下面我们简单的总