STM32中断嵌套方法_第1页
STM32中断嵌套方法_第2页
STM32中断嵌套方法_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 STM32中断嵌套方法 先说明:所有中断要放在同一个组里,因为只有组确定了 ,4位描述占先式优先级和副优先级的 位数才可以确定 以上是总结,下面是理解NVIC,来自WWW STM32-一NVIC (2012-05-13 14:45:56) 转载 NVICN estedVectored I nterrupt Controlled嵌套中断向量控制器) STM32 有 43 个 channel 的 settable的中断源:AIRC(Application Interrupt and Reset Register)寄存器中有用于指定优先级的4bits。 这4个bits用于分配pre-emption

2、优先级和sub优先级,在STM32的固件库中定义如下: / Preemption Priority Group #define NVIC_PriorityGroup_0 (u32)0 x700) 0 bits for pre-emption priority 4 bits for subpriority #define NVIC_PriorityGroup_1 (u32)0 x600) /1 bits for pre-emption priority 3 bits for subpriority #define NVIC_PriorityGroup_2 (u32)0 x500) /2 bits

3、 for pre-emption priority 2 bits for subpriority #define NVIC_PriorityGroup_3 (u32)0 x400) / 3 bits for pre-emption priority 1 bits for subpriority #define NVIC_PriorityGroup_4 (u32)0 x300) /4 bits for pre-emption priority 0 bits for subpriority 形象化的理解是:你是上帝,造了 43个人,这么多人要分社会阶级和社会阶层了;因为“阶级”的词性比较重;“阶层

4、”比较 中性,所以pre-emption优先级-阶级;每个阶级内部,有一些阶层,sub优先级-阶层; 如果按照NVIC_PriorityGroup_4这么分,就分为了 16个阶级每个阶级有0个阶层;阶级高的人,可以打断阶级低的正在做事 的人(嵌套),最多可以完成1个中断和15级嵌套。每个阶级你来指定这 43人中,谁进入该阶级; 一个人叫EXTI0_IRQChannel,你指定他进入“阶级 8”,则 NVIC_InitStructureNVICRQChannel= EXTI0_IRQChannel ; NVIC_InitStructureNVICRQChannelPreemptionPriori

5、ty= 8;/指定抢占式优先级另U 1,可取 0-15 在同一阶级内部,一个人在做事的时候,另外一个人不能打断他;( pre-emption优先级别相同的中断源之间没有嵌套关系)。 还有,如果他们两个同时想做事,因为没有阶层,那么就根据Vector table中的物理排序,让排名靠前的人去做。 又有1个人SPI1_IRQChannel,设定如下 NVIC_InitStructure .NVICRQChannel= SPI1_IRQChannel; NVIC_InitStructureNVICRQChannelPreemptionPriority= 0; /指定抢占式优先级另U 1,可取 0-1

6、5 SPI1_IRQChannel的阶级高,EXTI0_IRQChannel做事的时候可以打断(嵌套)。 如果按照NVIC_PriorityGroup_3这么分,就分为了 8个阶级(1个阶级是1个preemption优先级),每个阶级内有2个阶层(sub 优先级);高阶级的人,可以打断低阶级的正在做事的人 (嵌套),最多可以完成1个中断和7级嵌套。每个阶级(每个preemption 优先级),你来指定这 43人中,谁进入该阶级; 一个人叫EXTI0_IRQChannel,你指定他进入“阶级 3”,则: NVIC_lnitStructure.NVIC_IRQChannel = EXTIO_IRQ

7、Cha nn el; NVIC_lnitStructure.NVIC_IRQChannelPreemptionPriority = 3; / 指定抢占式优先级另U 1,可取 0-7 还需要指定他的阶层: NVIC_InitStructure.NVIC_IRQChannelSubPriority= 0; / 指定响应优先级另V 0,可取 0-1 另有1个人叫EXTI9_5_IRQChannel,他的阶级和阶层设定如下 NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQCha nn el; NVIC_InitStructure.NVIC_IRQChan

8、nelPreemptionPriority = 3; / 指定抢占式优先级另U 0,可取 0-7 NVIC_InitStructure.NVIC_IRQChannelSubPriority= 1; / 指定响应优先级别 1 那么这两个人是同一阶级的兄弟,一个人在做事的时候,另外一个人不能打断他(preemption优先级别相同的中断源之间没有嵌 套关系)。如果他们两个同时想做事,因为前者的阶层高,所以前者优先。 还有一个人叫USART1_IRQChannel,他的阶级和阶层设定如下 NVIC_InitStructure.NVIC_IRQChannel = USART1RQCha nnel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; / 指定抢占式优先级另U 0,可取 0-7 NVIC_InitStructure.NVIC_IRQChannelSubPriority= 1; / 指定响应优先级别 1 USART1_IRQChannel的优先级最高,当前面两个人做事的时候,他都可以打断(嵌套)。 依次类推:如果按照NVIC_PriorityGroup_0这么分,那么没有阶级,只

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论