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);

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/374411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

到底是什么程序和功能?

许多RDBMS支持“例程”的概念&#xff0c;通常将其称为过程和/或函数。 这些概念已经在编程语言中存在了一段时间了&#xff0c;而且不在数据库中。 区分程序和功能的著名语言是&#xff1a; 艾达 基本知识 帕斯卡 等等… &#xff08;存储的&#xff09;过程和&#xff08…

http的“无连接”指的是_http协议无状态中的 quot;状态quot; 到底指的是什么?...

引子&#xff1a;最近在好好了解http&#xff0c;发现对介绍http的第一句话【http协议是无状态的&#xff0c;无连接的】就无法理解了&#xff1a;无状态的【状态】到底指的是什么&#xff1f;&#xff01;找了很多资料不仅没有发现有一针见血正面回答这个问题的&#xff0c;而…

个人日志-7.4

姓名 刘鑫 时间 2016.7.4 学习内容 完善需求分析报告。撰写数据库设计说明书。初步安排计划概要设计说明书。调整项目开发计划说明书。 所遇问题 无 解决方案 无 转载于:https://www.cnblogs.com/liuxin13070013/p/5641967.html

通达信编程实例

1、放量a、今日比昨日的成交量放大了1倍&#xff1a;VOL/REF(VOL, 1)>2; b、今日的五日均量比五天前的五日均量放大了3倍&#xff1a;AA:MA(VOL, 5);BB:REF(AA, 5);AA/BB>4&#xff1b; c、今天的成交量达到了整个流通盘的10%以上(注意&#xff0c;10%的表达式是10/100或…

STM32F1笔记(五)外部中断EXTI

STM32的每个IO都可以作为外部中断的中断输入口。 STM32F103的中断控制器支持19个外部中断/事件请求。每个中断设有状态为&#xff0c;每个中断/事件都有独立的触发和屏蔽设置。 STM32F103的19个外部中断为&#xff1a; EXTI线0~15&#xff1a;对应外部IO口的输入中断。 EXT…

您不想错过的十大Java书籍

我们通过阅读书籍并进行实验来学习。 因此&#xff0c;必须选择最佳的可用选项。 在本文中&#xff0c;我想与一些书分享我的经验&#xff0c;以及它们如何帮助您发展为Java开发人员。 让我们从头开始&#xff0c;对于任何Java学生来说&#xff0c;前三本书都是一个很好的起点。…

pythonos模块_Python3 入门教程——os模块使用(文件/目录操作)

前言 os模块是Python标准库中一个用于访问操作系统的功能模块。 使用os模块中提供的接口&#xff0c;可以轻松实现跨平台访问。 在os模块中提供了一系列访问操作系统功能的接口&#xff0c;如&#xff0c;新建目录、删除目录、变更目录、重命名目录.... 新建单级目录 基本语法&…

当数据量很少的时候,tableview会显示多余的cell--iOS开发系列---项目中成长的知识二...

当数据量很少的时候,tableview会显示很多的cell,而且是空白的,这样很不美观 所以使用下面的方法可以去掉多余的底部的cell 原理是:设置footerView为frame 是 CGRectZero ,造成一种假象! UIView *v [[UIView alloc] initWithFrame:CGRectZero]; [self.myTable setTableFooterVi…

逗牙搞笑网www.idouya.xin

有一天&#xff0c;小明问妈妈“妈妈&#xff0c;妈妈&#xff0c;爸爸是什么啊&#xff1f;”妈妈刚刚和爸爸吵架&#xff0c;生气的回答“孩子&#xff0c;记住所有的男的都是色狼&#xff01;”小明有去问爸爸“爸爸&#xff0c;爸爸&#xff0c;妈妈是什么啊&#xff1f;”…

STM32F1笔记(六)独立看门狗IWDG

STM32F1内置了两个看门狗&#xff0c;独立看门狗IWDG和窗口看门狗WWDG&#xff0c;可以用来检测和解决由软件错误引起的故障。 IWDG最适合应用于那些需要看门狗作为一个在主程序之外&#xff0c;能够完全独立工作&#xff0c;并且对时间精度要求较低的场合。WWDG最适合那些要求…

在JSF 2中对定制验证器进行参数化

在JSF 2中编写自定义验证器并不复杂。 您实现Validator接口&#xff0c;添加FacesValidator批注&#xff0c;并在faces-config.xml中插入Validator声明&#xff0c; 仅此而已 。 一块蛋糕。 但是&#xff0c;让我们考虑以下情形&#xff1a; 您需要自定义日期验证器&#xff0c…

python绘制散点图的函数_python matplotlib更新函数的散点图

有几种方法可以对matplotlib图进行动画处理.在下文中,我们将使用散点图查看两个最小示例. (a)使用交互式模式plt.ion() 要进行动画制作,我们需要一个事件循环.获取事件循环的一种方法是使用plt.ion()(“交互式打开”).然后需要首先绘制图形,然后可以循环更新绘图.在循环内部,我…

偷学来的资料

--矛盾 fis3的pngcrush不支持你的node版本v4.4.0 换成4.2.4就可以了. --工具 淘宝 NPM 镜像:http://npm.taobao.org/ FIS2 to FIS3:https://github.com/fex-team/fis3/blob/master/doc/docs/fis2-to-fis3.md fis3demo:https://github.com/fex-team/fis3-demo --前端blog/网站 廖…

Java EE6事件:JMS的轻量级替代品

我今天要讨论的功能是Java EE 6中的事件机制。一般的想法是触发一个事件&#xff0c;并让事件监听器来接收它。 我创建了这个完全没有用的示例&#xff0c;但是它的简单性帮助我专注于重要的内容。 我将从后备操作中触发LogEvent&#xff0c;该事件将记录到java.util.Logger中。…

STM32F1笔记(七)WWDG窗口看门狗

窗口看门狗与独立看门狗最大的不同是中断&#xff0c;窗口看门狗拥有一个提前唤醒中断。也就是在快要产生复位的前一段时间&#xff08;T[6:0]0x40&#xff09;来提醒需要进行喂狗&#xff0c;否则将复位。因此当窗口看门狗的计数器值减到0x40的时候&#xff0c;产生中断&#…

求助!求助!网站页面图片太多,加载时间太长该怎么办?

以下是百度统计的诊断&#xff0c;小弟万般无奈&#xff0c;html上的缓存以及图片处理技巧欠缺&#xff0c;希望各位大大帮帮忙支个招&#xff01; 以下元素可在不损失原信息量的前提下进行压缩&#xff1a; http://www.5atl.com/Style/main.css &#xff08;大小&#xff1a; …

groovy怎样从sql语句中截取表名_Mysql和SQL

基本概念1.数据库DataBase简称&#xff1a;DB2.什么数据库&#xff1f;——用于存储和管理数据的仓库。存储过程是一个预编译的SQL语句&#xff0c;优点是允许模块化的设计&#xff0c;就是说只需创建一次&#xff0c;以后在该程序中就可以调用多次。3.数据库的特点&#xff1a…

使用java.util.prefs.Preferences代替java.util.Properties

典型的应用程序安装程序需要向用户询问几个选项&#xff0c;其中一些是配置问题&#xff0c;例如&#xff0c;应用程序应在其上运行的端口&#xff0c;应如何运行等。应用程序必须记住这些选项&#xff0c;并在每个选项中使用它们。跑。 解决此问题的标准方法是将这些选项写入属…

STM32F1笔记(八)时钟

STM32有五种时钟源 1、HSI。高速内部时钟&#xff0c;RC振荡器&#xff0c;频率为8MHz。 2、HSE。高速外部时钟&#xff0c;可接石英/陶瓷谐振器&#xff0c;或者借外部时钟源&#xff0c;频率范围为4MHz~16MHz。 3、PLL。锁相环倍频输出&#xff0c;其时钟输入源可选择为HS…

java常用工具类(一)

一、String工具类 package com.mkyong.common; import java.util.ArrayList; import java.util.List; /** * * String工具类. <br> * * author 宋立君 * date 2014年06月24日 */ public class StringUtil { private static final int INDEX_NO…