nvic_prioritygroupconfig这个函数有什么用
时间: 2023-08-31 14:07:07 浏览: 496
nvic_prioritygroupconfig函数用于配置NVIC(Nested Vectored Interrupt Controller)的中断优先级分组。在ARM Cortex-M系列处理器中,中断的优先级是通过优先级分组和子优先级来进行管理的。
优先级分组确定了中断优先级的位数和位域的分配方式。该函数的作用是设置优先级分组的配置。根据优先级分组的不同,可以支持不同数量的中断优先级和子优先级。
在调用nvic_prioritygroupconfig函数之前,需要先初始化NVIC,并且要在配置中断优先级之前调用该函数进行配置。根据具体的需求,可以选择不同的优先级分组配置,以满足系统对中断优先级管理的要求。
需要注意的是,优先级分组的配置只需要在系统初始化时进行一次,通常不需要再次修改。
相关问题
nvic_prioritygroupconfig函数
nvic_prioritygroupconfig函数是一个用于配置NVIC中断优先级分组的函数。在ARM Cortex-M系列处理器中,中断优先级分组是通过控制中断优先级位数和子优先级位数来实现的。这个函数可以设置中断优先级分组的位数,以便在中断处理过程中正确地处理优先级。
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_Init(&NVIC_InitStructure);
根据给出的代码,首先通过`NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2)`函数设置优先级分组为2,即抢占式优先级和响应式优先级各占2位。
然后,通过`NVIC_InitTypeDef`结构体配置中断向量表的相关参数。在这个例子中,`NVIC_InitStructure.NVIC_IRQChannel`被设置为`TIM2_IRQn`,表示将该中断通道配置为TIM2的中断通道。`NVIC_InitStructure.NVIC_IRQChannelCmd`被设置为`ENABLE`,表示使能该中断通道。
`NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority`被设置为2,表示抢占式优先级为2。`NVIC_InitStructure.NVIC_IRQChannelSubPriority`被设置为1,表示响应式优先级为1。
最后,通过调用`NVIC_Init(&NVIC_InitStructure)`函数来应用上述配置,初始化中断向量表。
这段代码的作用是配置TIM2的中断优先级。根据给出的配置,TIM2中断的抢占式优先级为2,响应式优先级为1。在发生TIM2中断时,如果有更高优先级的中断正在执行,则会暂停当前中断而执行更高优先级的中断。
阅读全文