STM32中配置优先级分组
时间: 2024-09-17 09:06:37 浏览: 50
中断嵌套及中断优先级,stm32f429
STM32微控制器中,优先级分组是为了在中断系统中管理不同优先级的中断请求。它允许用户将多个中断源归类到一组,并分配给它们共同的优先级等级。STM32的每个内核都有几个中断优先级组(一般有4个),比如GPIO、USART等外设可以映射到不同的优先级组。
配置优先级分组通常涉及以下几个步骤:
1. **了解优先级范围**:STM32的中断优先级从0到15,分为4个组,每组4个级别。
2. **选择中断源**:确定需要调整优先级的外设中断源。
3. **配置中断向量表**:通过`NVIC_PriorityGroupConfig`函数设置优先级分组,例如`NVIC_SetPriorityGrouping(NVIC_PriorityGroup_2)`将所有中断降低到第二优先级组。
4. **设置中断优先级**:对特定中断源使用`NVIC_InitStructure`结构体设置对应的中断优先级。
5. **启用中断**:最后,使用`NVIC_EnableIRQ()`启用配置好的中断。
```c
// 设置中断优先级分组为2(低优先级)
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
// 设置某个中断的优先级,例如ADC中断
NVIC_InitStructure.NVIC_IRQChannel = ADC_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; // 设置抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 设置子优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // 启用该中断
NVIC_Init(&NVIC_InitStructure);
```
阅读全文