【STM32】NVIC中断优先级管理
(1)NVIC中断优先级分组
1>,CM4内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且
具有256级的可编程中断设置。
2>,STM32F4并没有使用CM4的内核的全部东西,而只是用了它的一部分。
3>,STM32F40xx/STM32F41xx的92 个中断里面,包括10个内核中断和82个可屏蔽中
断,具有16级可编程中断优先级,而我们经常用的就是这82个可屏蔽中断。

特别说明:
一般情况下,系统代码执行过程中,只设置一次中断优先级分组,比如为分组2,设置
好分组后一般不会再改变分组。随意改变分组会导致中断管理混乱,程序出现意想不到的执
行结果。
中断优先级分组函数:
void NVCI_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);
(2)中断优先级设置
中断使能寄存器组:ISER[8]
作用:用来使能中断
32位寄存器,每个为控制一个中断的是能。STM32F40x只能有82个可屏蔽中断,所以
只使用了其中的ISER[0]~ISER[2]。ISER[0]的bit0~bit31分别对应中断0~31。ISER[1]的bit0~31
对应中断的32~63,ISER[2]的bit0~bit31对应中断的64~81。
中断失能寄存器组:ICER[8]
中断挂起控制寄存器组:ISPR[8]
中断解挂控制寄存器组:ICPR[8]
(3)NVIC总结:
<1>,系统运行后先设置中断优先级分组。调用函数:
void NVCI_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);
整个系统执行过程中,只设置一次中断分组。
<2>,针对每个中断,设置对应的抢占优先级和相应优先级
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);
<3>,如果需要挂起/解挂,查看中断当前激活状态,分别调用相关函数即可。
【STM32】NVIC中断优先级管理的更多相关文章
- STM32F407 NVIC 中断优先级管理 个人笔记
内嵌向量中断控制器:Nested Vectored Interrupt Controller (NVIC) 设置中断向量的优先级并使能. 响应优先级& 抢占优先级 抢占优先级:一个中断A还在处 ...
- STM32 NVIC中断优先级分组说明
STM32F103系列上面,又只有60个可屏蔽中断(在107系列才有68个) 中断管理方法 首先,对STM32中断进行分组,组0~4.同时,对每个中断设置一个抢占优先级和一个响应优先级值. 分组配置是 ...
- stm32中断优先级管理与外部中断编程
stm32中断优先级管理与外部中断编程 中断优先级管理 外部中断编程 官方示例程序 exti.h #ifndef __EXTI_H #define __EXIT_H #include "sy ...
- STM32 NVIC配置详解
例程: /* Configure one bit for preemption priority */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1) ...
- (二)STM32中中断优先级理解
很多人在配置STM32中断时对固件库中的这个函数NVIC_PriorityGroupConfig()——配置优先级分组方式,会很不理解,尤其是看中文翻译版的,因为中文翻译版里把这里翻译成“先占优先级和 ...
- STM32 NVIC
在stm32中是要配置nvic的.何为nvic,对于我这样的初学者来说,直观感受就是在设置为中断后 还需要配置 中断的优先级nvic就是搞这个的. 那么具体的需要配置些什么那? void NVIC_C ...
- [STM32].NVIC嵌套中断向量的理解
转自:http://www.21ic.com/embed/jiaocheng/sheji/201209/5634.html 一.STM32 (Cortex-M3) 中的优先级概念 STM32(Cort ...
- STM32之spi管理模式
1)sip管理模式分为:硬件管理和软件管理:主要由NSS .SSI.SSM决定: NSS是芯片上一个实实在在的引脚,SSI和SSM是SPI_CR1控制器里的的位. 值得注意的是:NSS分外部引脚和内部 ...
- STM32的内存管理
ref:https://www.cnblogs.com/leo0621/p/9977932.html 这里针对STM32F407芯片+1M外部内存的内存管理!(全篇是个人愚见,如果错误,请不吝指出!) ...
随机推荐
- ListView如何获取点击单元格内容
Point m_MBRpt = listView1.PointToClient(Control.MousePosition); ListViewItem lstrow = lis ...
- 解压 压缩 C#
public class SharpZip { public SharpZip() { } /// <summary> /// 压缩 /// </summary> /// &l ...
- springboot错误1 Failed to execute goal org.springframework.boot:spring-boot-maven-plugin
关于Springboot打包错误的问题 | Failed to execute goal org.springframework.boot:spring-boot-maven-plugin https ...
- java+实现上传文件夹
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小 ...
- MapBox
MapBox的地图API大家用过吗 用作网站或者APP的底图,就不用自己架设地图服务器了 发布自己的地图了 这跟Google Map是一样的道理,类似的还有天地图,高德,百度地图API等等. 属于前端 ...
- permutation 2(递推 + 思维)
permutation 2 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) ...
- MySQL_(Java)使用JDBC向数据库中修改(update)数据
MySQL_(Java)使用JDBC向数据库发起查询请求 传送门 MySQL_(Java)使用JDBC向数据库中插入(insert)数据 传送门 MySQL_(Java)使用JDBC向数据库中删除(d ...
- Python 图形界面元素
from tkinter import * import os def button_click1(): try: filePath = r'D:\CloudMusic' os.system(&quo ...
- EasyUI中对于Grid的隐藏与显示
$('#div_Grid').datagrid('hideColumn', 'mtnDate'); $('#div_Grid').datagrid('showColumn', 'mtnDate');
- MAMP 环境下安装Redis扩展
1. 下载对应版本的 php 源码,(当前使用版本是 php5.6.30 )版本号最后一位有点区别不影响链接:http://php.net/get/php-5.6.31.tar.bz2/from/a/ ...