STM32F1笔记(四)NVIC中断优先级管理
STM32将中断分为5个组,组0~4。配置代码如下:
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
在标准库里,分组的定义如下:
/** @defgroup Preemption_Priority_Group * @{*/#define NVIC_PriorityGroup_0 ((uint32_t)0x700) /*!< 0 bits for pre-emption priority4 bits for subpriority */
#define NVIC_PriorityGroup_1 ((uint32_t)0x600) /*!< 1 bits for pre-emption priority3 bits for subpriority */
#define NVIC_PriorityGroup_2 ((uint32_t)0x500) /*!< 2 bits for pre-emption priority2 bits for subpriority */
#define NVIC_PriorityGroup_3 ((uint32_t)0x400) /*!< 3 bits for pre-emption priority1 bits for subpriority */
#define NVIC_PriorityGroup_4 ((uint32_t)0x300) /*!< 4 bits for pre-emption priority0 bits for subpriority */
翻译过来就是:
分组0为0位抢占优先级,4位响应优先级;
分组1为1位抢占优先级,3位响应优先级;
分组2为2位抢占优先级,2位响应优先级;
分组3为3位抢占优先级,1位响应优先级;
分组4为4位抢占优先级,0位响应优先级;
假设使用分组3,可以使用的抢占优先级为2^3=8,即0~7,代码可配置如下:
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
//NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
//NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
//NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;
//NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 4;
//NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5;
//NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 6;
//NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 7;
可以使用的响应优先级为2^1=2,即0~1,代码可配置如下:
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
//NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
优先级逻辑:
1、抢占优先级的级别高于响应优先级。即抢占优先级高的中断可以打断正在执行的优先级低的中断。
2、数值越小所代表的优先级就越高,即0为最高优先级。
3、当抢占优先级相同时,响应优先级高的不可以打断优先级低的。
4、如果两个中断的抢占优先级和响应优先级都一样,哪个中断先发生就先执行。
NVIC配置示例:
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);
STM32F1笔记(四)NVIC中断优先级管理相关推荐
- 21.NVIC中断优先级管理
NVIC中断优先级管理 笔记基于正点原子官方视频 视频连接https://www.bilibili.com/video/BV1Wx411d7wT?p=71&spm_id_from=333.10 ...
- 关于嵌入式学习随笔-6《NVIC中断优先级管理》
1.中断技术概述 在单片机应用系统中,中断技术主要用于时时检测与控制,也就是要求单片机能感及时地响应中断请求源提出的服务请求,进行快速响应并及时处理,这些工作是由单片机片内的中断系统来实现的.当中断请 ...
- STM32F4 HAL库开发 -- NVIC 中断优先级管理
一.中断寄存器 STM32F429xx的96个中断里面,包括10个内核中断和91个可屏蔽中断,具有16级可编程的中断优先级,而我们常用的就是这91个可屏蔽中断.在MDK内,与NVIC相关的寄存器,MD ...
- 【STM32】NVIC 中断优先级管理,抢占优先级,响应优先级,中断寄存器
文章目录 抢占优先级和响应优先级 抢占 响应 NVIC 的优先级组 中断寄存器 ISER[8] ICER[8] ISPR[8] ICPR[8] IABR[8] IP[240] 中断优先级设置步骤总结 ...
- 【STM32】NVIC中断优先级管理(中断向量表)
STM32F1xx官方资料: <STM32中文参考手册V10>-第9章 中断和事件 Cortex-M3内核支持256个中断,其中包含了16个内核中断(异常)和240个外部中断,并且具有25 ...
- STM32外部中断与(NVIC)中断优先级管理
文章目录 1.中断介绍 1.中断的概念 2.中断的产生 3.中断处理的流程 2.STM32内嵌向量中断控制器NVIC 1.NVIC控制器的寄存器 2.STM32中断配置 3.STM32外部中断EXIT ...
- 【STM32】 NVIC 中断优先级管理
目录 中断解释 相关寄存器组介绍 设计逻辑 配置方法 总结 中断解释 NVIC:向量中断控制器. 中断可以看作是一个事件. 举例来说,你正在家里学习,突然来了电话,你只能停下当前的学习去接电话,在接电 ...
- 神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python上下文管理器)
with语句 使用with语句替代try-finally 语句,代码更加的简洁清晰 对于需要对资源进行访问的任务,无论在代码运行过程中,是否发 生异常,都会执行必要的清理操作,释放资源. 1. wit ...
- NVIC中断优先级管理
最新文章
- Pytorch常见的坑汇总
- oracle adf 使用,ORACLE ADF 问题总结
- unzip 压缩包含路径,解压缩覆盖路径下的同名文件
- Android 实现边听边录音探究
- php 枚举cookie内容,php如何修改cookie内容?
- 八十、React中的容器组件和无状态组件
- 架构解密:从分布式到微服务
- JavaScript 使用[]读取对象属性
- shell脚本:lvs启动简易脚本
- PostgreSQL 统计所有数据表各自的总行数
- win10打字突然变成繁体
- leetcode557. 反转字符串中的单词 III
- 1.6编程基础之一维数组_01与指定数字相同的数的个数
- 40-400-030-运维-优化-MySQL入门调优脚本tuning-primer的使用
- C++面试题-面向对象-面向对象概念
- 课后答案︻︼─一大收集
- 穿衣助手 张凯:电商产品经理的成长之路
- python绝对值_绝对值排序 (Python代码)
- 移动终端浏览器初始设置apple-mobile-web-app-capable(转)
- 第二章.外包银行面试-ZRGJ
热门文章
- mybatisplus 操作另一个数据库的数据_MySQL数据库的基础操作
- gromacs 安装_带你入门带你飞 gromacs材料计算模拟系列
- docker 多个mysql_mysql8.0 利用docker容器安装配置多主多从集群
- 我是如何解决gitlab 命令行上传需要输密码
- sql双表查询java代码_原生sql 多表查询
- python中升级pip报错_linux系统下pip升级报错的解决方法
- java定义一个course类,求指教定义一个学生类 ,大学生小学生,定义一个选课接口...
- DOM操作案例之--全选与反选
- 微信内置浏览器点击“返回”关闭窗口
- Html5开发之链接标签nav的用法