打印
[应用相关]

ST32之NVIC中断优先级管理

[复制链接]
370|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
慢醇|  楼主 | 2021-3-27 22:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1.NVIC中断优先级分组
1) ST32之NVIC介绍
   ① CM3内核支持256个中断,其中包含16个内核中断和240个外部中断,并且具有256的可编程中断控制
   ② STM32并没有使用CM3内核的全部东西,而是只用了它的一部分
   ③ STM32有84个中断,包括16个内核中断和68个可屏蔽中断,具有16级可编程的中断优先级
   ④ STM32F103系列,只有60个可屏蔽中断(107系列才有68个)

使用特权

评论回复
沙发
慢醇|  楼主 | 2021-3-27 22:32 | 只看该作者
2) NVIC中断优先级管理方法
     首先,对ST32中断进行分组,组0~4,同时对每一个中断设置一个抢占优先级和一个响应优先级,分组是在SCB->AIRCR中配置:

使用特权

评论回复
板凳
慢醇|  楼主 | 2021-3-27 22:46 | 只看该作者
3) 抢占优先级和响应优先级区别
  ① 高优先级中断可以打断低优先级中断(抢占谁高谁优先)

使用特权

评论回复
地板
慢醇|  楼主 | 2021-3-27 22:48 | 只看该作者
② 抢占优先级相同的中断,高响应优先级的中断不可以打断低响应优先级的中断(抢占相同,响应之间不同时发生情况下,不互扰)

使用特权

评论回复
5
慢醇|  楼主 | 2021-3-27 23:05 | 只看该作者
③ 抢占优先级相同的中断,当两个中断同时发生的情况下,哪个响应优先级高,哪个先执行(抢占相同,响应同时,谁高谁先)

使用特权

评论回复
6
慢醇|  楼主 | 2021-3-27 23:07 | 只看该作者
  ④ 如果两个抢占优先级和响应优先级中断一样,则看哪个中断先发生就先执行(抢占响应皆同时,谁先谁上)
注:特别说明下,一般情况下,系统代码执行过程中,只设置一次中断优先级分组。随意改变分组会导致中断管理混乱,程序出现意想不到的执行结果

使用特权

评论回复
7
慢醇|  楼主 | 2021-3-27 23:09 | 只看该作者
4) 分组设置函数为NVIC_PriorityGroupConfig ();
  设置好了系统中断分组,那么对于每个中断我们又怎么确定他的抢占优先级和响应优先级
呢?下面我们讲解一个重要的函数为中断初始化函数 NVIC_Init,其函数申明为:
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)

使用特权

评论回复
8
慢醇|  楼主 | 2021-3-27 23:10 | 只看该作者
example:

使用特权

评论回复
9
慢醇|  楼主 | 2021-3-27 23:10 | 只看该作者
ST32之NVIC中断优先级管理
最后总结:

使用特权

评论回复
10
慢醇|  楼主 | 2021-3-27 23:11 | 只看该作者
The end

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

117

主题

1187

帖子

5

粉丝