stm32f103c8t6中NVIC_IRQChannel如何划分
时间: 2025-06-30 09:11:43 浏览: 19
在 STM32F103C8T6 微控制器中,NVIC_IRQChannel 的划分基于 ARM Cortex-M3 内核的中断架构。该内核支持最多 240 个可配置的外部中断通道(IRQn),每个通道对应一个特定的外设或系统事件。STM32F103C8T6 芯片厂商根据其外设设计将这些中断通道映射到具体的外设上,例如 USART、SPI、TIM 等。
在 CMSIS 标准下,`IRQn_Type` 枚举类型定义了所有中断通道的编号,包括系统异常和外部中断。例如,在 STM32F10x 系列中,`TIM2_IRQn` 表示定时器 2 的中断通道编号,`USART1_IRQn` 表示串口 1 的中断通道编号等。开发者可以通过包含 `stm32f10x.h` 头文件查看完整的 IRQn 枚举定义。
NVIC 支持对每个中断通道设置优先级,通过 `NVIC_Init()` 函数进行配置,具体包括抢占优先级和响应优先级(子优先级)的划分。例如在使用 TIM3 定时器中断时,需要设置 NVIC 相关寄存器以实现中断优先级的配置:
```c
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; // 设置为 TIM3 中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 抢占优先级为 0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 子优先级为 1
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // 启用中断通道
NVIC_Init(&NVIC_InitStructure); // 初始化 NVIC 配置
```
每个中断通道都可通过 `NVIC_EnableIRQ()` 函数单独启用,或通过 `NVIC_DisableIRQ()` 函数禁用[^3]。此外,STM32F103C8T6 提供了多个优先级分组选项,允许用户在抢占优先级和子优先级之间分配位数,从而灵活地管理中断嵌套机制。
### 中断通道划分示例
以下是一些常见的 STM32F103C8T6 外设对应的中断通道编号:
- `TIM2_IRQn`:定时器 2 中断
- `TIM3_IRQn`:定时器 3 中断
- `USART1_IRQn`:串口 1 中断
- `EXTI0_IRQn`:外部中断线 0 中断
- `ADC1_2_IRQn`:ADC1 和 ADC2 共享的中断
具体的中断通道分配可以查阅 STM32F103C8T6 的参考手册或启动文件(如 `startup_stm32f10x_md.s`)中的 `Vectors` 表格,其中列出了所有中断服务函数的入口地址。
### 总结
STM32F103C8T6 的 NVIC_IRQChannel 划分由 Cortex-M3 内核和芯片厂商共同决定。开发者需通过 CMSIS 提供的 `IRQn_Type` 枚举了解各外设对应的中断编号,并使用 NVIC 接口函数进行中断优先级配置和使能控制。这种机制使得多个外设中断能够并行运行,并支持中断嵌套功能。
---
阅读全文
相关推荐


















