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);
时间: 2024-04-17 12:03:14 浏览: 39
根据给出的代码,首先通过`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中断时,如果有更高优先级的中断正在执行,则会暂停当前中断而执行更高优先级的中断。
相关问题
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); TIM_Cmd(TIM2, ENABLE);
这段代码是用来配置中断优先级和使能TIM2定时器的操作。
1. `NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);` 这行代码用于配置中断优先级分组,将优先级分为两组,其中第一组有0~3个抢占优先级和0~1个子优先级,第二组有0~1个抢占优先级和0~3个子优先级。
2. `NVIC_InitTypeDef NVIC_InitStructure;` 声明了一个结构体变量 `NVIC_InitStructure`,用于配置中断向量表的初始化参数。
3. `NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;` 设置中断通道为TIM2的中断通道。
4. `NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;` 使能TIM2中断通道。
5. `NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;` 设置抢占优先级为2。
6. `NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;` 设置子优先级为1。
7. `NVIC_Init(&NVIC_InitStructure);` 使用上述初始化参数对中断向量表进行初始化设置。
8. `TIM_Cmd(TIM2, ENABLE);` 使能TIM2定时器,启动定时器的计数。
void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; //声明一个中断初始化结 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //设成优先级组0:先占优先级2位 从优先级2位 NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn; //设置TIM3中断优先级 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0; //中断占先等级 NVIC_InitStructure.NVIC_IRQChannelSubPriority=2; //中断响应优先级 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //使能 NVIC_Init(&NVIC_InitStructure);
这段代码是用来配置 NVIC(Nested Vectored Interrupt Controller)的,它是 ARM Cortex-M 系列处理器中用来管理中断的模块。在这段代码中,首先声明了一个中断初始化结构体 NVIC_InitTypeDef,然后配置了中断优先级组为 0,设置了 TIM2 中断的优先级为 0,响应优先级为 2,最后使能了 TIM2 中断。这样就完成了对 NVIC 的配置。