STM32-中断-NVIC优先级分组

目录

前言

什么是中断?

什么是中断优先级?

什么是中断嵌套?

一、中断与控制

1.1 stm32f407 的中断向量表

二、NVIC(嵌套向量中断控制器)

2.1 NVIC 的一些特性

2.2 NVIC 的基本结构

2.2.1 NVIC工作简单示意图

2.2.2 NVIC如何管理中断呢?

2.3 NVIC中断优先级管理-如何分配中断优先级?

2.3.1 什么是抢占优先级?什么是响应优先级?


前言

什么是中断?

        中断就是主程序在运行的时候,由于触发了某些特定条件主程序暂停,先转去执行中断函数,执行完成后再回到主程序之前暂停的位置继续执行主程序。

什么是中断优先级?

        当有多个中断源同时申请中断时,CPU会根据每个中断源所设置的中断优先级分先后处理中断。

什么是中断嵌套?

        就是把中断再中断。中断嵌套就是当中断函数已经在执行的时候,出现了更高优先级的中断相应申请中断,CPU会暂停当前中断转而执行更高优先级的中断,执行完成后再回到之前被暂停的中断位置继续执行。

一、中断与控制

1.1 stm32f407 的中断向量表

 

 其中灰色的表示的是内核中断,一般我们用不到,而其余的部分就是stm32外设的中断了。

对于F1系列也是类似的,可以找到其中断向量表。


二、NVIC(嵌套向量中断控制器)

2.1 NVIC 的一些特性

  1.   对于STM32F405xx/07xx STM32F415xx/17xx 具有 82 个可屏蔽中断通道(中断源)
  2.   NVIC 是一个内核外设,是CPU的小助手。嵌套向量中断控制器 (NVIC) 和处理器内核接口紧密配合。
  3.   每个中断通道都拥有16个可编程的优先等级,可对优先级进行分组,进一步设置抢占优先   级和响应优先级

2.2 NVIC 的基本结构

2.2.1 NVIC工作简单示意图

        
NVIC基本结构简单框图

         如图就是NVIC的简单示意图,左边紫色部分是外设,橙色是内核,红色是CPU。其中n代表这个外设可能占多个中断通道

2.2.2 NVIC如何管理中断呢?

        外设发送中断的时候,会先经过NVIC,NVIC会给每个中断先分配一个优先级,经过NVIC处理后,通过右边的一个输出口,把信息告诉CPU目前需要处理哪一个中断。

        这样一来大大减少了CPU的工作量,分配优先级的任务就交给了NVIC,CPU只需处理完成计算就行了。

2.3 NVIC中断优先级管理-如何分配中断优先级?

        那么NVIC是如何分配中断的优先级的呢?

NVIC优先级分组

分组方式

抢占优先级响应优先级

分组0

0位,取值为0

4位,取值为0~15
分组1

1位,取值为0~1

3位,取值为0~7
分组2

2位,取值为0~3

2位,取值为0~3
分组33位,取值为0~71位,取值为0~1
分组4

4位,取值为0~15

0位,取值为0

        NVIC的分组是由 AIRCR  寄存器的三位来配置的,可以分成 0~4 共5组 (可参见 STM32F3与F4内核编程手册)

        NVIC中断优先级优先级寄存器的4位(0~15)决定,也就是前面所说的每个中断通道有16个可编程的优先级这4位可以进行切分,分为高n位的抢占优先级和低4-n位的响应优先级。举例:比如选了分组1,那么抢占优先级有1个bit位,只能选0~1;而响应优先级有3个bit位,就可以选0~7。注意:值越小,优先级越高。

2.3.1 什么是抢占优先级?什么是响应优先级?

        举个简单的例子吧:比如CPU现在要处理多个中断,那么响应优先级更高的中断可以提前被执行;如果这时已经在执行中断程序了,来了个抢占优先级更高的新中断,这个新中断就能打断当前正在执行的中断,转而先执行这个抢占优先级更高的新中断——也就是中断嵌套。执行完成后再执行原来被打断的中断。

        抢占优先级高的可以中断嵌套(是可以打断正在进行的低抢占优先级中断)

        抢占优先级相同的中断,当两个中断同时发生时,哪个响应优先级高先执行哪个。

        响应优先级高的可以优先排队,抢占优先级和响应优先级均相同按中断号排队

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值