STM32中的NVIC

STM32中的NVIC

ID:38235474

大小:75.91 KB

页数:3页

时间:2019-05-27

STM32中的NVIC_第1页
STM32中的NVIC_第2页
STM32中的NVIC_第3页
资源描述:

《STM32中的NVIC》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、STM32中的优先级NVICSTM32中有2种优先级:抢占式优先级和响应式优先级。有人也把响应式优先级称作“亚优先级”或“副优先级”,STM32中的每一个中断源都有这两种优先级属性并且都要设置确定值。具有高抢占优先级的中断可以去“抢”低抢占优先级的中断,打断它们的执行,从而实现了中断嵌套。而同抢占优先级中断不能打断,只能排队等待,排队的顺序即响应优先级。高抢占优先级中断会“打断”低抢占级中断的执行,从而实现中断嵌套低抢占级中断A高抢占级中断B低抢占级中断A中断A被打断了同抢占级中断,后来的中断只能排队等待,排队的顺序以响应优先级的高低为准正在执行的中断

2、A高响应优先级中断C低响应优先级中断B等待中断A执行结束同抢占级中断无法嵌套,只能排队等待正在执行的中断执行完毕。抢占优先级定义了中断的嵌套级别;响应优先级定义了中断的排队顺序。Cortex-M3中定义了一个8位寄存器来储存中断优先级的设置(每一个中断都有一个8位寄存器)。这个8位寄存器中只保存了此中断的抢占优先级和响应优先级的信息,照理应该非常简单(比如高4位用来设置抢占优先级,低4位用来设置响应优先级),可Cortex-M3在这里耍了一个小聪明,它没有规定抢占优先级和响应优先级在8位寄存器中的位数,抢占优先级占多少位,响应优先级占多少位,全凭开发者

3、指定(当然,所有中断的优先级寄存器的结构是统一的)。3位抢占优先级,5位响应优先级,够不够呢?76543210开发者来指定寄存器结构,这也太新潮了吧:)指定8位优先级寄存器的结构的过程叫做优先级分组。8位的寄存器可以分成9组:0、所有位用于响应优先级1、最高1位用于抢占优先级,其余7位用于响应优先级2、最高2位用于抢占优先级,其余6位用于响应优先级3、最高3位用于抢占优先级,其余5位用于响应优先级4、最高4位用于抢占优先级,其余4位用于响应优先级5、最高5位用于抢占优先级,其余3位用于响应优先级6、最高6位用于抢占优先级,其余2位用于响应优先级7、最高

4、7位用于抢占优先级,其余1位用于响应优先级8、所有位用于抢占优先级当所有位用于抢占优先级时,你可以设置256级抢占,是不是很恐怖啊?STM32“阉割”了这个8位寄存器,你只能对其中的4位进行分组(5组):0、所有位用于响应优先级1、最高1位用于抢占优先级,其余3位用于响应优先级2、最高2位用于抢占优先级,其余2位用于响应优先级3、最高3位用于抢占优先级,其余1位用于响应优先级4、所有位用于抢占优先级在STM32中只有这4位归你划分76543210在实际编程中,你可以通过STM32固件库中的NVIC_PriorityGroupConfig()函数来指定优

5、先级寄存器的分组方式。使用第0组优先级分组方式:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);使用第1组优先级分组方式:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);使用第2组优先级分组方式:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);使用第3组优先级分组方式:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);使用第4组优先级分组方式:NVIC_PriorityGr

6、oupConfig(NVIC_PriorityGroup_4);最后,在上代码之前再解释几个名词。CHANNEL(通道):通道即中断源。Cortex-M3最多有240个中断源,STM32有些“偷工减料”,只提供给我们43个通道。IRQ:外部的中断源。也称为外部通道IRQ_CHANNELx,其中x即为通道号。STM32有43个通道,x的取值就在0~63之间。NVIC:嵌套中断向量控制器。就是STM32中把本文中所讲规则变为现实的器件。它用来协调各个中断发生的顺序(嵌套或是排队)。Preempt优先级=抢占优先级Sub优先级=响应优先级AIRC寄存器:就是

7、前边提到的优先级寄存器,每一个中断都有一个。以上名词解释是为了大家看资料方便,下面上代码。设置中断优先级的一般顺序是这样滴:1、定义优先级结构变量2、设置优先级分组3、设置优先级结构变量(1)指定要设置中断源(2)设置抢占优先级(3)设置响应优先级(4)使能中断4、提交优先级结构变量,完成初始化NVIC_InitTypeDefNVIC_InitStructure;//定义优先级结构变量NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//设置中断优先级分组,这里为第1组:最高1位为抢占式,后3位为响应优先级N

8、VIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;//

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。