NVIC 中断优先级管理

发布者:清晨微风最新更新时间:2022-07-05 来源: csdn关键字:NVIC  中断优先级管理  STM32 手机看文章 扫描二维码
随时随地手机看文章

简介

Cortex3 内核支持 256 个中断,其中 16 个内核中断和 240 个外部中断,并且具有 256级的可编程中断设置。


STM32没有使用 CM3 内核的全部东西,而是只用了它的一部分。


STM32 有 84 个中断,包括 16 个内核中断和 68 个可屏蔽中断,具有 16 级可编程的中断优先级。我们常用的就是这 68 个可屏蔽中断


STM32F103 系列上面只有 60 个可屏蔽中断。STM32F107 系列有 68 个可屏蔽中断。


STM32 的中断分组: STM32 将中断分为 5 个组,组 0 ~ 4。该分组的设置是由 SCB->AIRCR 寄存器的 bit10~8 来定义的。


AIRCR[10: 8] bit[7: 4]分配情况 分配结果

0 111 0: 4 0位抢占优先级,4 位响应优先级

1 110 1: 3 1 位抢占优先级, 3 位响应优先级

2 101 2: 2 2 位抢占优先级, 2 位响应优先级

3 100 3: 1 3 位抢占优先级, 1 位响应优先级

4 011 4: 0 4 位抢占优先级, 0 位响应优先级


一、两个中断的抢占优先级和响应优先级都是一样的话,哪个中断先发生就先执行


二、高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。


三、抢占优先级相同的中断,高优先级的响应优先级不可以打断低响应优先级的中断。


1.系统中断设置优先级

NVIC 中断管理函数主要在 misc.c 文件里面。


设置整个系统的中断优先级分组


NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);


这个函数的作用是对中断的优先级进行分组,这个函数在系统中只能被调用一次,一旦分组确定就最好不要更改。


2.每个中断设置优先级

NVIC 中断优先级


NVIC_InitTypeDef NVIC_InitStructure;  //创建中断优先级参数的结构体变量

NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //对应的外部中断向量

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //抢占优先级 2,

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; //响应优先级 2

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断

NVIC_Init(&NVIC_InitStructure); //中断优先级参数的所有结构体变量值 给 中断优先级寄存器


关键字:NVIC  中断优先级管理  STM32 引用地址:NVIC 中断优先级管理

上一篇:外部中断简述
下一篇:定时器做PWM脉冲

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多开源项目推荐
换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved