stm32之中断优先级NVIC
来源:互联网 发布:淘宝名人补剂 编辑:程序博客网 时间:2024/04/30 14:25
什么是NVIC?
即嵌套向量中断控制器(Nested Vectored Interrupt Controller)。
STM32的中有一个强大而方便的NVIC,它是属于Cortex内核的器件,不可屏蔽中断 (NMI)和外部中断都由它来处理,而SYSTICK不是由 NVIC来控制的。
与NVIC有关的寄存器
对其定义了如下结构体
typedef struct{vu32 ISER[2];u32 RESERVED0[30];vu32 ICER[2];u32 RSERVED1[30];vu32 ISPR[2];u32 RESERVED2[30];vu32 ICPR[2];u32 RESERVED3[30];vu32 IABR[2];u32 RESERVED4[62];vu32 IPR[15];} NVIC_TypeDef;
对寄存器进行介绍:
- ISER[2]:中断使能寄存器组(2个32位寄存器,可以表示60个可屏蔽中断)
- ICER[2]:中断失能寄存器组
- ISPR[2]:中断挂起控制寄存器组
- ICPR[2]:中断解挂控制寄存器组
- IABR[2]:中断激活标志位寄存器组(只读,通过它可以知道当前在执行的中断是哪一个)
- IPR[15]:中断优先级控制的寄存器组(设置各个中断的抢占和响应优先级)
STM32 的中断分组
第0组:所有4位用于指定响应优先级(16种)
第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级(8种)
第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级(4种)
第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级(2种)
第4组:所有4位用于指定抢占式优先级
我的理解是中断分组对各个中断会有一个限制,比如使用第0组只能存在一个抢占优先级。
抢占优先级>响应优先级
不同的抢占优先级可以存在中断抢占,不同的响应优先级不可以抢占。
一个例子说明
void NVIC_Config(void){ NVIC_InitTypeDef NVIC_InitStructure; /* Configure one bit for preemption priority --------------------------- */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); /* UART1 --------------------------------------------------------------- */ NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /* UART2 -------------------------------------------------------------- */ NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);}
优先分组是0组,说明只能存在响应优先级,互相之间不能被打断,而当两个任务同时发生时,UART2 会先响应。
0 0
- stm32之中断优先级NVIC
- STM32 NVIC 中断优先级管理
- STM32 NVIC 中断优先级管理
- STM32 NVIC中断优先级管理
- STM32 NVIC 中断优先级管理
- STM32 NVIC 中断优先级管理
- STM32 对于NVIC中断优先级的设置
- STM32系列第6篇--NVIC中断优先级分组
- stm32学习笔记 F1系列中断优先级管理NVIC
- NVIC中断优先级管理
- NVIC中断优先级管理
- NVIC中断优先级管理
- STM32 NVIC之抢占优先级和响应优先级
- 【STM32】STM32之NVIC
- STM32 NVIC的优先级概念
- STM32 的优先级NVIC配置
- STM32 NVIC 抢占优先级和响应优先级
- STM32之NVIC
- HDOJ 5627 Clarke and MST (位运算最大生成树kruskul)
- [学习笔记] KEIL 如何快速更改工程名字
- SQL四种语言:DDL,DML,DCL,TCL
- Android4.4电池管理
- SAP接口编程-RFC系列09 : 使用BAPI
- stm32之中断优先级NVIC
- spring实现定时任务的两种方式之Spring 3整合Quartz 2实现定时任务
- 使用maven Debug断点出现无法找到源问题
- oracle SGA区基础知识与查看命令
- POJ_P1006 生理周期(中国剩余定理)
- Xcode7.2中如何添加一个Empty Application模板
- Java正则表达式简单用法
- Linux系统移植002: 编译Uboot 2014.04 基于AT91SAM9X35EK
- SQL中的where条件,在数据库中提取与应用浅析