你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32的中断优先级管理NVIC

[复制链接]
STMCU小助手 发布时间:2022-12-26 15:00
Cortex M3内核支持256个中断,其中包含:
16个内核中断
240个外部中断
并且具有256级可编程中断设置

STM32F1并没有使用Cortex M3的全部

STM32有84个中断,其中包括:
16个内核中断
68个外部中断(可屏蔽中断)

STM32F103系列只有60个可屏蔽中断


中断优先级分组
首先,对STM32中断进行分组(在系统初始化时就分好组),组0~4.同时,对每个中断设置一个抢占优先级和一个响应优先级值

分组配置是在寄存器SCB->AIRCR中进行配置

UW`(R56FAUNXCXBQ)H0]6OO.png

在SCB的AIRCR寄存器的8到10位可以对中断进行分组

假设被分到组2,意味着每个中断可以设置2位抢占优先级,2位响应优先级

对于每个中断,他有一个IP寄存器,4到7位,相当于一共4个位可以用来设置抢占和响应

STM32F103具有16级可编程的中断优先级,为什么是16级呢?

因为4个位可以用来设置抢占和响应

2的4次方就是16

抢占优先级与响应优先级的区别
抢占优先级是指,两个中断,抢占优先级谁高,谁就可以抢占另外一个正在执行的中断,可以打断

例如A中断的抢占优先级为0(优先级高),B中断的抢占优先级为3(低优先级),B正在发生,正在执行B中断的中断服务函数,如果A发生了,那么A是可以打断B的,执行完了再回去B

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

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

中断优先级分组函数
misc.c

9ba8095436964941816e62c87a43765b.png

da91642b4d584c8fb2bed4f5fa266d45.png

中断优先级设置寄存器
core_cm3.h

266b22980d5f43bb839b3ef959e2081c.png

可以看到,有240个IP寄存器,即Interrupt Priority Register

240个8位寄存器,每个中断使用一个寄存器来确定优先级

STM32F10x系列一共60个可屏蔽中断,使用IP[59]~IP[0]

a69e03f21bd943f9ab5adc7648a1b6e6.png


NVIC初始化
misc.c

d306e56e5beb4c57a37f49c75dee49b4.png

misc.h

ff9d311967ed4052adf7bb38e9630085.png

cc466f25906e4b5ab9f2d53727a3c6d3.png

f1f40d3f1cd649a2b7942cb2cdaf48eb.png

中断使能寄存器ISER寄存器
ISER[8]用于使能中断,共有8个32位寄存器

32位的寄存器,每个位控制一个中断的使能

STM32F10x只有60个可屏蔽中断,因此只能收了第1个和第2个寄存器,即ISER[0]和ISER[1]

ISER[0]的bit 0~31分别对应中断0~31

ISER[1]的bit 0~27分别对应中断32~59

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

其余上同

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

ce5b4974799649798af5ffb1819a06bb.png


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

dc7fe4b361b54cdda582348b576fb031.png

中断激活标志位寄存器组IABR
IABR[8]

只读,通过读取该寄存器可以知道当前执行的中断是哪一个,如果对应的位为1,则说明该中断正在执行

cd8f3bc7d74c4020971f04f3d057608d.png

中断配置步骤总结
1. 首先设置中断优先级分组,确定系统的分组级别,知道有几位抢占优先级和几位响应优先级可以设置(这里只需要设置一次)

2. 针对每个中断,调NVIC_init函数,给定想要的抢占优先级和响应优先级,对中断进行设置

3. 如果需要挂起或解挂,查看中断当前的激活状态,调用相关函数即可


举例:
main.c

27944740aaea41d88c7d56421b73e0c5.png

exit.c

4c8c7ddd7235494a86f9ccb5f9da5fe4.png

————————————————
版权声明:CodeForCoffee


收藏 评论0 发布时间:2022-12-26 15:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版