STM32之NVIC理解.doc
3页STM32有 43个 channel的 settable的中断源;AIRC(Application Interrupt and Reset Register)寄存器中有用于指定优先级的 4 bits这 4个 bits用于分配 preemption优先级和 sub优先级,在 STM32的固件库中定义如下#define NVIC_PriorityGroup_0 ((u32)0x700)#define NVIC_PriorityGroup_1 ((u32)0x600)#define NVIC_PriorityGroup_2 ((u32)0x500)#define NVIC_PriorityGroup_3 ((u32)0x400)#define NVIC_PriorityGroup_4 ((u32)0x300) 每个工程只能有一种分组方式:按 NVIC_PriorityGroup_0来分组:抢占优先级为 1个,子优先级为 16个;按 NVIC_PriorityGroup_1来分组:抢占优先级为 2个,子优先级为 8个;按 NVIC_PriorityGroup_2来分组:抢占优先级为 4个,子优先级为 4个;按 NVIC_PriorityGroup_3来分组:抢占优先级为 8个,子优先级为 2个;按 NVIC_PriorityGroup_0来分组:抢占优先级为 16个,子优先级为 1个;抢占优先级高的中断可以打断抢占优先级低的中断;抢占优先级相同时比较响应优先级(子优先级)。
先设定分组方式例:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); //按NVIC_PriorityGroup_4来分组此时,有一中断 EXTI0_IRQChannel,你指定他为抢占优先级 8,则NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 8; // 指定抢占式优先级别,可取 0-15又有 1中断 SPI1_IRQChannel,设定如下NVIC_InitStructure.NVIC_IRQChannel = SPI1_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 指定抢占式优先级别,可取 0-15则 SPI1_IRQChannel的抢占优先级高,EXTI0_IRQChannel 做事的时候可以打断(嵌套)又:若分组方式为:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3); //按NVIC_PriorityGroup_3来分组此时就有 8个抢占优先级,2 个子优先级;EXTI0_IRQChannel中断,你指定他为抢占优先级 3,则:NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; // 指定抢占式优先级别,可取 0-7还需要指定他的阶层:NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定响应优先级别,可取 0-1又有 TIM2_IRQn中断,设定如下:NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;// 指定抢占式优先级别,可取 0-7NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; // 指定响应优先级别,可取 0-1由于抢占优先级相同,响应优先级 EXTI0_IRQChannel中断高于 TIM2_IRQn中断,所以EXTI0_IRQChannel可以打断 TIM2_IRQn;还有一 USB_LP_CAN1_RX0_IRQn,设定如下:NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn; //CAN1 RX0中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级 0NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //响应优先级别 0,可取 0-1USB_LP_CAN1_RX0_IRQn优先级最高,前两中断发生时,它都可以打断。
附:void NVIC_Config(void){ NVIC_InitTypeDef NVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);//一个工程中只能使用一种分组方式NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn; //CAN1 RX0 中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级 0NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //子优先级为 0NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;// 指定抢占式优先级别,可取 0-7NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; // 指定响应优先级别,可取 0-1NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; // 指定抢占式优先级别,可取 0-7NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定响应优先级别,可取 0-1NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);}。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


