对于不同的中断源,stm32f103中断优先级微控制器的响应顺序遵循什么规则

嵌入式复习_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
嵌入式复习
上传于||文档简介
&&嵌​入​式​基​础​复​习​资​料
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢STM32微控制器,最全面的STM32微控制器文章 - 电子工程世界网
STM32微控制器
在电子工程世界为您找到如下关于“STM32微控制器”的新闻
STM32微控制器资料下载
STM32系列ARM Cortex-M3微控制器原理与实践STM32系列ARM Cortex-M3微控制器原理与实践STM32系列ARM Cortex-M3微控制器原理与实践STM32系列ARM Cortex-M3微控制器原理与实践第1章ARM及Cortex-M3处理器概述
1.1ARM处理器系列
1.1.1命名规则
1.1.2ARM处理器系列...
STM32系列ARM Cortex-M3微控制器原理与实践.PDF
书虽然copy的东西很多,并不咋样,但有些内容还是有参考价值的.
第1章ARM及Cortex-M3处理器概述
1.1ARM处理器系列
1.1.1命名规则
1.1.2ARM处理器系列
1.2ARMCortex-M3处理器
1.2.1处理器组件
1.2.2Cortex-M3...
摘要:本文主要介绍了使用STM32F103RB芯片的32位闪存微控制器为内核制作一个MP3播放器,此芯片是基于ARMCortex-M3为内核,具有强大的功能。该MP3播放器由上述的微控制器、MP3解码芯片(VS1003)、SD卡(FAT32文件系统)和液晶显示屏(Nokia5110)组成。关键词:STM32;VS1003;SD;FAT32...
STM32F10xxx数据手册(中文版)
本手册是STM32微控制器产品的技术参考手册,技术参考手册是有关如何使用该产品的具体信息,包含各个功能模块的内部结构、所有可能的功能描述、各种工作模式的使用和寄存器配置等详细信息。 技术参考手册不包含有关产品技术特征的说明,这些内容在数据手册中。数据手册中的内容包括:产品的基本配置(如内置Flash和RAM的容量、外设模块的种类和数量等),管脚的数量和...
本手册是STM32微控制器产品的技术参考手册
参照2009年12月 RM0008 Reference Manual 英文第10版
,技术参考手册是有关如何使用该产品的具体信息,包含各个功能模块的内部结构、所有可能的功能描述、各种工作模式的使用和寄存器配置等详细信息。 技术参考手册不包含有关产品技术特征的说明,这些内容在数据手册中。数据手册中的内容包括:产品的基本配置(如内置Flash...
STM32引领微控制器市场的变革...
沙场点兵STM32微控制器全系列成员...
STM32微控制器原理与实践...
&&&&&&&&本文将探讨基于ARM的标准微控制器如何在一个被DSP和FPGA长期垄断的市场上打破复杂的控制模式,我们将以意法半导体的基于Cortex-M3 内核的STM32系列微控制器为例论述这个过程。...
专家揭秘基于ARM_的STM32微控制器(Hitex)...
STM32微控制器相关帖子
等待执行。 DSP指令和浮点运算单元扩大了产品的应用范围。
STM32L432KC:
STM32 L4系列Cortex-M4超低功耗微控制器
•超低功耗模式:8 nA,有备份寄存器没有RTC(5个唤醒引脚)•超低功耗模式 + RTC:200 nA,具有备份寄存器(5个唤醒引脚)•超低功耗模式 + 16 KB RAM:170 nA•超低...
& & 真的是惊喜不断,之前一直申请开发板,抽奖啊,一直都不中,前几天,管理员说有评测,我就申请了,二话不说就通过了,真的好开心,谢谢论坛给予我这次机会啦,哈哈。之前一直玩STM32的,自己也有好几块板子,时而玩一下,慢慢就没时间玩了。公司的项目又慢慢向stm8,51进军,最近企业拼价格啦,没办法,苦逼的是我们,做好的平台慢慢移植。& & 收到板子了,马上...
首先感谢活动组织者所给予的测评机会,使自己能较早体验到它。在F411、F412和F413这三款开发板中,如果F411是个小胖子的话,那其它的两个就称得上是身材修长的美男子了,其外观如图1所示。图1 开发板外观
除了体型的差异外,其主要性能又如何呢?1)板载了STM32F413ZHT6 微控制器,采用 LQFP144 封装,1.5 MB 闪存,320KB SRAM
2)可访问所有 STM32...
; 2.配置系统时钟为200MHZ,SD卡时钟为25MHZ,SDRAM的时钟为100MHZ,使用FATFS文件系统。关闭LCD层0的显示,开启LCD层1的显示,使用RGB888显示。& & 3.选用STM32自带的JPEG硬件编解码器、TjpgDEC解码库和LIBJPEG解码库,分别对图片进行测试,比较三者的解码能力。 LIBJPEG解码库简介:& &nbsp...
之前使用stm32都是用直接操作寄存器的方法,毕竟103系列的功能相对比较简单,同时寄存器数量也还不睡特别多,F7系列就不一样了,功能太强大了,虽然也可以像103一样直接操作寄存器,但是那样可能会花更多的时间和精力,更何况我们这种白天上班晚上干活的人没有太多的精力耗费呀,只能站在各位前辈的肩膀上。因此研究了一下stm32的固件库。
STM32Cube目前几乎支持stm32全系列,其目录结构如下...
+ STM32CubeF7,基于可视化模板方便设计生成各种IDE下的初始工程文件。对于设计这涉及上百数百管脚,功能复杂芯片的软件,这样的工具很有帮助。 这样的工具,适合作为从电路设计、到软件设计、到产品设计等系列工程的一环。  STM32CubeMX的特点:1.直观的选择 STM32 微控制器。2.微控制器图形化配置:自动处理引脚冲突;动态设置确定的时钟树; 可以动态确定参数设置的外围和中间件模式...
一、概述STM32F769I-DISCO该开发套件得益于音频、多传感器支持、图形、安全、视频和高速连接功能,适用于广泛的应用。 Arduino 连接支持提供无限扩展功能,可选择专业附加板。 STM32F769系列微控制器性能强劲,在216MHZ频率下可达到1082COREMARK的水平,最高2MB FLASH及512K SRAM,能支持大多数IOT及可穿戴应用。内置MIPI-DSI控制器,借助...
了TouchGFX和STM32 Chrome-ART的性能;AudioPlayer:音乐播放器,通过SAI接口;HomeControl:家居控制系统;Timeand Calendar:万年历和时钟;VideoPlayer:视频播放器,使用的是STM32全新的硬件JPEG解码,需要提供USB-OTG接U盘支持; 下面图是TouchGFX例程主菜单,有2种显示方式,一种是图所示方条,另一种是图示左右...
初学者太重要了,对于产品开发更为便利,大大缩短学习时间,不知用哪款单片机搭建平台,只觉得这个单片机首先得性价比极高。
假如,我的工作或者我个人选择了STM32这款单片机作为我的主要常用MCU,我是很愿意参与这个工作的,毕竟有了一个平台,做事情少了许多重复的前期构建,是一个十分重要的基础设施。只不过,我无论工作还是自己(自己用STM32)都不曾需要使用到它,自然也就不太会在这上面花时间,不过,还是...
SensorTile开发套件(STEVAL-STLKT01V1)是ST在物联网(IoT)大潮下推出的一个高度具有广泛功能的集成开发平台,旨在提高系统设计周期和加速结果的交付。在极小的SensorTile核心板(只有13.5×13.5mm)上嵌入了高精度和超低功耗的惯性传感器、气压传感器和数字MEMS麦克风。板载80MHz微控制器具有一个专用的硬件麦克风接口并且提供超低功耗的支持。无线网络处理器...
STM32微控制器视频
STM32微控制器创意
你可能感兴趣的标签
热门资源推荐【图文】第5章 STM32系列微控制器开发基础_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
第5章 STM32系列微控制器开发基础
上传于||暂无简介
大小:2.40MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢STM32中断优先等级配置简介
这次用到了STM32的中断优先等级,在配置的时候遇到了抢占式优先等级和响应优先等级这两个概念,看的很多资料都讲地太官方,对与我这种刚入门的菜鸟来说是不知所云,这两个优先等级具体概念是什?区别是什么?为什么要设两个优先等级?
偶然在网上遇到了一篇名为STM32中断优先等级的理解的文章,讲的通熟易懂,一下子就明白了这两个优先等级的大概意思(只能说大概),在这里总结一下一面日后又忘记,OK正题:
抢占式优先等级:即抢占式优先等级高的中断可以在抢占式优先等级低运行的时候剥取内核运行抢占式优先等级高的中断响应,也就是说等级低的先等等,先去运行完等级高的在回来运行等级低的,也就是所谓的中断嵌套,优先等级高的中断可以嵌套在优先等级低的中断中,倘若抢占式优先等级相同时则没有嵌套关系,得先运行完当前的中断响应再去运行同级的中断响应。
如果是两个抢占式优先等级相同的中断同时响应(要区别好与上面提到的一个已经在运行的情况),这个得看响应优先等级等级的高低(也称为亚优先等级/副优先等级),先运行高的再运行低的。
那么要是抢占式优先等级和响应优先等级都相同那么就得根据他们在中断向量表中的配位顺序了。
注意:响应优先级就是来一个中断运行一个中断程序,如果两个中断信号来到,并且抢占优先级相同,那么判断响应优先级高的先运行,结束后再运行优先级低的。而这运行中断程序当中再来同抢占优先级,不同响应优先级,是不会打断当前运行的程序,也只会等到当前中断程序运行完后再运行。即这两个中断没有任何嵌套关系。
注意事项:
1)如果指定的抢占式优先级别或响应优先级别超出了选定的优先级分组所限定的范围,将可能得到意想不到的结果(烧芯片??);
2)抢占式优先级别相同的中断源之间没有嵌套关系;
3)如果某个中断源被指定为某个抢占式优先级别,又没有其它中断源处于同一个抢占式优先级别,则可以为这个中断源指定任意有效的响应优先级别。
总之:抢占式优先等级&响应优先等级&中断表中的排列顺序。
还有一个就是分组的概念,粗看头晕眼花云里雾里,细看明其理。
要分级肯定就要一个寄存器来配置,32中这个寄存器只用了4位而且(因为中断源不多4位足矣)
其配置方式如下,XXXX,QXXX,QQXX,QQQX,QQQQ五种方式也就是5组,这就有了组的概念。
第0组:所有4位用于指定响应优先级&
第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级&
第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级&
第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级&
第4组:所有4位用于指定抢占式优先级& 。
以下内容为转摘:看了恍然大悟
ARM公司的Cortex-m3
内核,支持256个中断,其中包含16个内核中断和240个外部中断,并且具有256级的可编程中断设置。在ST公司的STM32单片机中最多有84个中断,包括16个内核中断(这16个内部中断是任何半导体商也改不了的),和68个可屏蔽中断,具有16级可编程的中断优先级。但是在STM32F103系列中只有60个可屏蔽中断,(107系列有68个)。
针对这60个可屏蔽中断,重点掌握它的一个中断优先级寄存器组IPR,全称Interrupt Priority
Registers。这个寄存器组包含15个32位的寄存器,一个可屏蔽中断占用8bit,那么一个寄存器可以控制4个可屏蔽中断,一共15*4=60。然而在这占用的8bit中又只使用了高4bit,这高4bit的分配才是STM32F103系列单片机中断嵌套的设置所在。STM32F103系列的中断嵌套分为5个组,分别是0、1、2、3、4&&这5个组,下面是5个组与中断嵌套的对应关系。
0位抢占优先级,4位响应优先级
1位抢占优先级,3位响应优先级
2位抢占优先级,2位响应优先级
3位抢占优先级,1位响应优先级
4位抢占优先级,0位响应优先级
对于抢占优先级和响应优先级,只需记住两点,第一、抢占任何优先级比都比所有响应优先级优先级高。只有抢占优先级更高的具有中断嵌套功能。(即打断其他正在执行的中断)。第二、数字越小优先级越高,抢占优先级和响应优先级都一样时,首先响应中断通道对应中断向量地址低的那个中断。
下面对0组和1组的情况做一个分析。
0组对应是0位抢占优先级,4位响应优先级,那么无抢占优先级,响应优先级可设置为0到15级(2的4次方种)中的任意一种。
1组对应是1位抢占优先级,3位响应优先级,那么抢占优先级只可设置为0级或者1级中的任意一种(2的1次方种),响应优先级可设置为0到7级(2的3次方种)中的任意一种。
上电复位时,中断配置为4组,并且60个外部中断都是抢占优先级为0级,无响应优先级。
所以可以看出判断两个中断的优先级时先看抢占优先级的高低,如果相同再看响应优先级的高低。如果全都相同最后看中断通道向量地址。
一般来说在使用过程中,一个系统使用一个组别就完全可以满足需要。所以在使用一个组别后一般不要在系统中再改动组别,骨灰级玩家可以去试试(小心芯片烧了)。
外部中断:
STM32F103的外部中断EXTI支持19个外部中断/事件请求。每个中断/事件都有独立的触发和屏蔽设置。
0到15线:对应外部I/O口输入中断
线16:接到PVD输出
线17:接到RCT闹钟事件
线18:接到USB唤醒事件
线16到线18我自己都没用过,主要对线0到15的I/O输入中断做一个总结,有个注意的地方是这0到15线的外部中断,其中0到4线,这5个外部中断都有自己单独的中断响应函数。5到9线公用一个中断服务函数,10到15线公用一个中断服务函数。
外部中断配置寄存器组EXTICR包含4个32位的寄存器,分别是EXTICR0、EXTICR1、EXTICR2、EXTICR3、但每一个寄存器只用了低16位,每4位控制一个I/O口,一个寄存器控制4个I/O口,EXTICR寄存器组控制16个I/O口,刚好一个GPIO的I/O口数。下面以
EXTICR0为例,用一个表格表示:
0000& & GPIOA
0000& & GPIOA
0000& & GPIOA
0000& & GPIOA
0001& & GPIOB
0001& & GPIOB
0001& & GPIOB
0001& & GPIOB
0010& & GPIOC
0010& & GPIOC
0010& & GPIOC
0010& & GPIOC
0011& & GPIOD
0011& & GPIOD
0011& & GPIOD
0011& & GPIOD
0100& & GPIOE
0100& & GPIOE
0100& & GPIOE
0100& & GPIOE
0101& & GPIOF
0101& & GPIOF
0101& & GPIOF
0101& & GPIOF
0110& & GPIOG
0110& & GPIOG
0110& & GPIOG
0110& & GPIOG
比如配置GPIOA.0就是将EXTICR0的低4位配置成0000,若配置GPIOB.1就是配置EXTICR0的4到7位,为0001。
这里有一个问题,如果要配置GPIOA.0和GPIOB.0,会引起冲突,不知道是不是分时配置解决的。我用的固体库的方式,不需要考虑这些,呵呵。注意使用固件库时中断复位函数是写在stm32f10x_it.c这个文件里的。
下面结合外部中断附上固件库版本的程序:
主函数里:
void NVIC_Configuration(void)
NVIC_InitTypeDef NVIC_InitS
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);&
//设置为优先级组2
NVIC_InitSructure.NVIC_IRQChannel =
EXTI15_10_IRQn;&
//定义外部中断线13中断通道
NVIC_InitSructure.NVIC_IRQChannelPreemptionPriority =
&&&//抢占优先级0
NVIC_InitSructure.NVIC_IRQChannelSubPriority = 0;&
&&&//响应优先级0
NVIC_InitSructure.NVIC_IRQChannelCmd = ENABLE;&
//使能指定通道
NVIC_Init(&NVIC_InitSructure);&
NVIC_InitSructure.NVIC_IRQChannel =
EXTI15_10_IRQn;&
&&&//定义外部中断线15中断通道
NVIC_InitSructure.NVIC_IRQChannelPreemptionPriority =
NVIC_InitSructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitSructure.NVIC_IRQChannelCmd = ENABLE;&
//使能指定通道
NVIC_Init(&NVIC_InitSructure);
NVIC_InitSructure.NVIC_IRQChannel = EXTI0_IRQn;&
&&&//定义外部中断线0中断通道
NVIC_InitSructure.NVIC_IRQChannelPreemptionPriority =
NVIC_InitSructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitSructure.NVIC_IRQChannelCmd = ENABLE;&
//使能指定通道
NVIC_Init(&NVIC_InitSructure);
void EXTI_Configuration(void)
&&EXTI_InitTypeDef
EXTI_InitS&
//初始化结构
&&GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource13);&&//指明当前哪个引脚为外部中断触发引脚
&&GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource15);
&&EXTI_ClearITPendingBit(EXTI_Line13);&
&&&//清除中断标志位
EXTI_Line13对应相应的中断线13
&&EXTI_ClearITPendingBit(EXTI_Line15);
&&EXTI_InitStructure.EXTI_Mode
=EXTI_Mode_I&
//选择中断模式请求
&&EXTI_InitStructure.EXTI_Trigger
= EXTI_Trigger_F&
&&&//下降沿触发
&&EXTI_InitStructure.EXTI_Line =
EXTI_Line13|EXTI_Line15;&&//
选择待使能的外部中断线
&&EXTI_InitStructure.EXTI_LineCmd
= ENABLE;& &&
定义选中线的新状态&&使能
&&EXTI_Init(&EXTI_InitStructure);&
&//把EXIT_InitStructure中的每一个参数按缺省值填入
&&GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);&
&&&//指明当前哪个引脚为外部中断触发引脚
&&EXTI_ClearITPendingBit(EXTI_Line0);&&
&&EXTI_InitStructure.EXTI_Mode
=EXTI_Mode_I&
//选择中断模式请求
&&EXTI_InitStructure.EXTI_Trigger
= EXTI_Trigger_R&
&&&//上升沿触发
&&EXTI_InitStructure.EXTI_Line =
EXTI_Line0;& &&
选择待使能的外部中断线
&&EXTI_InitStructure.EXTI_LineCmd
= ENABLE;& &&
定义选中线的新状态&&使能
&&EXTI_Init(&EXTI_InitStructure);&
&//把EXIT_InitStructure中的每一个参数按缺省值填入
stm32f10x_it.c这个文件里
void EXTI15_10_IRQHandler(void)
&&&if(EXTI_GetITStatus(EXTI_Line13)!=RESET)
&GPIO_WriteBit(
GPIOA,GPIO_Pin_8,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_8)));
//LED0翻转
EXTI_ClearITPendingBit(EXTI_Line13);
if(EXTI_GetITStatus(EXTI_Line15)!=RESET)
&GPIO_WriteBit(
GPIOD,GPIO_Pin_2,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_2)));
//LED0翻转
EXTI_ClearITPendingBit(EXTI_Line15);&&
void EXTI0_IRQHandler(void)
if(EXTI_GetITStatus(EXTI_Line0)!=RESET)
{ GPIO_WriteBit(
GPIOA,GPIO_Pin_8,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_8)));
//LED0翻转
& & GPIO_WriteBit(
GPIOD,GPIO_Pin_2,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_2)));
//LED0翻转
&&EXTI_ClearITPendingBit(EXTI_Line0);&
NVIC算是有所了解了
(注:MSB对齐即最高有效位对齐)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。STM32微控制器系列_cn_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
STM32微控制器系列_cn
上传于||文档简介
&&S​T​M2​微​控​制​器​系​列​_​c​n
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩5页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 stm32f103 中断向量表 的文章

 

随机推荐